因此,我想将 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/