Mysql 如何在 WHERE 语句中使用连接表中行的 COUNT 值?

发布于 2024-09-28 21:03:11 字数 418 浏览 3 评论 0原文

像这样:

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

如何正确地做到这一点?

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

此查询的含义是选择 join(images) 表中照片最多的 1 个广告。

谢谢 ;)

Like that:

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

Throws an error:

Unknown column "total_images" in where clause

If this way:

WHERE COUNT(i.t_1) > 2

Throws an error:

Invalid use of group function

How to do it right way?

If need i'll post full statement.

The meaning of this query to pick the 1 ad with the most photos inside joined(images) table.

Thanks ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-10-05 21:03:11

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

HAVING COUNT(i.t_1) > 2

The WHERE clause can only be used to filter rows in the table / derived table on a row-by-row basis. To filter based on the results of an aggregation you need to using HAVING instead of WHERE:

HAVING COUNT(i.t_1) > 2
凉墨 2024-10-05 21:03:11

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

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

If you're really just looking for the "1 ad with the most photos", you might want something like:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文