SQL WHEREing 在不同表的 COUNT

标签 sql mysql join count

因此,我想将 WHERE 条件应用于由 COUNT() AS 子句分配的字段。我的查询目前看起来像这样:

SELECT new_tags.tag_id
       , new_tags.tag_name
       , new_tags.tag_description
       , COUNT(DISTINCT new_tags_entries.entry_id) AS entry_count 
FROM (new_tags) 
JOIN new_tags_entries ON new_tags_entries.tag_id = new_tags.tag_id 
WHERE `new_tags`.`tag_name` LIKE '%w' 
AND `entry_count` < '1' 
GROUP BY new_tags.tag_id ORDER BY tag_name ASC

失败的一点是 WHERE 子句中的 entry_count - 它不知道 entry_count 列是什么。我的表看起来像这样:

new_tags {
    tag_id INT
    tag_name VARCHAR
}

new_tags_entries {
    tag_id INT
    entry_id INT
}

我想根据 new_tags_entries 中与标签 ID 相关的不同 entry_id 的数量来过滤结果。

有道理吗?

提前致谢。

最佳答案

要过滤聚合值,请使用 HAVING 子句...

SELECT  
   new_tags.tag_id, new_tags.tag_name,  
   new_tags.tag_description,  
   COUNT(DISTINCT new_tags_entries.entry_id) AS entry_count  
FROM (new_tags)  
JOIN new_tags_entries ON new_tags_entries.tag_id = new_tags.tag_id   
WHERE `new_tags`.`tag_name` LIKE '%w'   
GROUP BY new_tags.tag_id  
HAVING COUNT(DISTINCT new_tags_entries.entry_id)  < '1' 
ORDER BY tag_name ASC

关于SQL WHEREing 在不同表的 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2080624/

相关文章:

MySQL 和产品交叉销售 (XSell)

android - 如何编写一个php服务,定期从android上传新的sqlite数据到mysql

php - 在多个连接中引用同一行

mysql - 如何对另一个表中的行进行有效的计数(连接)

ruby-on-rails - 如何在多态连接表上强制唯一性?

MySQL 如何获取查询以显示没有客户参加的研讨会

sql - 基于 2 个字段的计数结果为第 3 个

php - MySQL PHP 查询无法正常工作

mysql - 将分区从第一个数据库移动到第二个数据库

mysql - 从日期字段中过滤每个月的sql数据