具有子句mysql的嵌套计数?

Posted

技术标签:

【中文标题】具有子句mysql的嵌套计数?【英文标题】:Nested Count with having Clause mysql? 【发布时间】:2015-03-25 18:42:12 【问题描述】:

我想计算从不同类别中选择的图像,我的下面的查询返回错误

#1064 - 您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 2 行的 '( select count(i1.id) as cnt FROM image_gallery i1 LEFT OUTER JOIN image_g' 附近使用正确的语法

我哪里错了?

SELECT count(*)
(select count(*)
FROM image_gallery i1
LEFT OUTER JOIN image_gallery i2
  ON (i1.category_id = i2.category_id AND i1.id < i2.id)
GROUP BY i1.id
HAVING COUNT(*) < 10 
) as total_pics

【问题讨论】:

子查询之外的count(*)...您要查询哪个表以获取该计数? 【参考方案1】:

您错过了FROM 关键字

SELECT sum(cnt)
FROM
(
  select count(i1.id) as cnt
  FROM image_gallery i1
  LEFT OUTER JOIN image_gallery i2 ON i1.category_id = i2.category_id 
                                  AND i1.id < i2.id
  GROUP BY i1.id
  HAVING COUNT(*) < 10 
) as total_pics

【讨论】:

感谢您的快速回复先生,但我的查询仍然返回错误:- #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 '( select count(i1.id) as cnt FROM image_gallery i1 LEFT OUTER JOIN image_g' 附近使用正确的语法 谢谢,先生,但是如果我有 4 个类别,返回结果与 count(*) 小于 10 不匹配,那么从此查询返回的总和必须为 40,但它返回 184?它是怎么做的? 执行内部查询,看看这是你想要的还是你需要调整它。

以上是关于具有子句mysql的嵌套计数?的主要内容,如果未能解决你的问题,请参考以下文章

mysql_数据查询_嵌套查询

mysql嵌套计数-如何?

SQL 错误:“嵌套的 INSERT、UPDATE、DELETE 或 MERGE 语句必须具有 OUTPUT 子句。” - 在 Azure Databricks 中执行时

子句嵌套的 BigQuery 不符合预期

具有多重嵌套表的分组方式和计数作为 LINQ 查询

如何将树状的数组和对象的嵌套数据结构转换为具有计算/计数 id 和跟踪父 id 的项目列表?