GROUP BY 语法问题

GROUP BY syntax issue

我在使用 GROUP BY 函数时遇到问题。我有以下 SQL 这是 return 部分正确的结果,但是,我似乎无法弄清楚如何以这种方式订购 GROUP BYCOUNT其中 return 是正确的行数。

我在 table 中有以下数据,其中 bookdescid 的计数大于 1 - [1]:https://i.stack.imgur.com/QKzaL.png

在上面屏幕截图中显示的数据中,有 24 个唯一 publisherid

在下面显示的查询的子选择部分,我试图 return publisherid 其中 bookdescid > 1,但是,我保留 运行进入问题,因为当我按 bookdescid 分组时它只有 returns 14 行。结果应该是 24

很烦人,因为我之前有这个工作,但对于我来说,我现在无法弄清楚我哪里出错了或者如何恢复它

结果应该只出现在 bookdescid > 1 的地方,而不是按 bookdescid 分组,因为它只是在不考虑 publisherid

的情况下删除行

我试过很多 GROUP BY 的组合,但我不知道怎么搞定这个

代码在这里:

SELECT publisherfullname
FROM publisher
WHERE publisherid IN (
  SELECT publisherid
  FROM published_by
  GROUP BY bookdescid
  HAVING count(bookdescid) > 1);

您需要做的是找到所有计数 > 1 的 bookdescid,然后 然后 select publisherid 值与那些 bookdescid 值相关联。然后,您可以将该结果加入 publisher table 以获取发布者名称。没有样本数据很难确定,但这应该有效:

SELECT p.publisherfullname
FROM (
    SELECT DISTINCT publisherid
    FROM published_by
    WHERE bookdescid IN (
        SELECT bookdescid 
        FROM published_by
        GROUP BY bookdescid
        HAVING COUNT(bookdescid) > 1
    )
) pb
JOIN publisher p ON p.publisherid = pb.publisherid

(小)demo on db-fiddle