Sqlite 按语法问题分组

Sqlite 按语法问题分组,sqlite,group-by,syntax,Sqlite,Group By,Syntax,我对分组方式功能有问题。我有下面的SQL,它返回部分正确的结果,但是,我似乎不知道如何对分组按和计数进行排序,从而返回正确的行数 在bookdescid的计数大于1-[1]的表中,我有以下数据: 在上面的屏幕截图中显示的数据中,有24个是唯一的publisherid 在下面显示的查询的子选择部分中,我试图返回publisherid,其中bookdescid为>1,但是,我一直遇到问题,因为当我按bookdescid分组时,它只返回14行。结果应该是24 恼人的是,我以前就有过这样的工作,但就我的

我对
分组方式
功能有问题。我有下面的SQL,它返回部分正确的结果,但是,我似乎不知道如何对
分组按
计数
进行排序,从而返回正确的行数

bookdescid
的计数大于1-[1]的表中,我有以下数据:

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

在下面显示的查询的子选择部分中,我试图返回
publisherid
,其中
bookdescid
为>1,但是,我一直遇到问题,因为当我按
bookdescid
分组时,它只返回14行。结果应该是24

恼人的是,我以前就有过这样的工作,但就我的一生而言,我不知道我现在哪里出了问题,也不知道如何找回它

仅当
bookdescid
未按
bookdescid
分组时,结果才应为>1,因为此时它正在删除行,而不考虑
publisherid

我试过很多组合,但不知怎的,我不能确定这一个

代码如下:

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

您需要做的是找到所有计数大于1的
booksecid
,然后选择与这些
booksecid
值关联的
publisherid
值。然后,您可以将该结果加入到
publisher
表中,以获取发布者名称。没有样本数据很难确定,但这应该是可行的:

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

(小)

“以任何身份显示在同一本书上合作过的出版商的名称,以识别他们与哪个出版商合作过。不得有重复相同信息的行”这里的预期输出是什么?子选择的预期结果是返回一个包含24个publisherid的列表,其中bookdescid计数大于1。但是,当我按bookdescid分组时,我遇到了一些问题。它删除了一些publisherid不同的行。我想要如下所示,其中bookdescid计数大于1。它显示了与该bookdescid关联的所有publisherid行。基本上,如果bookdescid计数大于1,将所有与该书相关的publisherid返回给我,以便在不清楚您的要求时关闭。没有样本输入,没有样本输出=>很难弄清楚你想要什么。工作得很有魅力!非常感谢,尼克。我明白你现在所说的关于过程顺序的内容了。@KJDD1我想你可能需要在外部子查询上使用一个
DISTINCT
,以避免在出版商涉及两本不同的书时重复结果。请参阅我的编辑。@KJDD1就示例数据而言,帖子中的文本是首选,有一些工具可以用来将其转换为DDL,然后可以用于在和等网站上测试查询(我强烈建议测试这两个网站)@KJDD1我在我的答案中添加了一个小演示,其中包含了您的数据子集,因此您可以查看其中一个db fiddle站点。当你问一个问题时,摆弄样本数据是一个很大的优势。太棒了!谢谢你,尼克,非常感谢