【问题标题】:Mysql how to use COUNT value of rows from joined table in WHERE statement?Mysql如何在WHERE语句中使用连接表中行的COUNT值?
【发布时间】:2011-04-29 13:14:40
【问题描述】:

像这样:

COUNT(i.t_1) AS total_images
WHERE total_images > 2

抛出错误:

Unknown column "total_images" in where clause

如果这样:

WHERE COUNT(i.t_1) > 2

抛出错误:

Invalid use of group function

如何正确地做到这一点?

如果需要我会发布完整的声明。

这个查询的含义是选择在joined(images)表中包含最多照片的1个广告。

谢谢 ;)

【问题讨论】:

    标签: mysql mysql-error-1111


    【解决方案1】:

    WHERE 子句只能用于逐行过滤表/派生表中的行。要根据聚合结果进行过滤,您需要使用 HAVING 而不是 WHERE:

    HAVING COUNT(i.t_1) > 2
    

    【讨论】:

    • 谢谢,它正在工作,我必须阅读关于 HAVING 的文章;)10 分钟后会批准
    • @Beck:查看这个相关问题:stackoverflow.com/questions/287474/… - SQL:HAVING 和 WHERE 有什么区别?
    【解决方案2】:

    如果您真的只是在寻找“包含最多照片的 1 个广告”,您可能需要以下内容:

    select i.t_1,count(*) n ... group by i.t_1 order by n desc limit 1

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2014-08-17
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多