我使用子查询来计算总项目数。
我这样的SQL查询。
SELECT `id`,`name`,
(SELECT count(*) FROM `tags_r` WHERE tag_id = `t`.`id`) as count
FROM `tags` AS `t` WHERE count > '0'
这个子查询是可行的。
但如果我需要得分= 0.我该怎么办?
我试过但不行。
测试1 - 不工作
SELECT `id`,`name`,
if (SELECT count(*) FROM `tags_r` WHERE tag_id = `t`.`id`) > '0'
FROM `tags` AS `t`
测试2 - 不工作
{{1}}
但不行。
答案 0 :(得分:1)
尝试使用JOIN逻辑:
SELECT
t.id,
t.name,
COUNT(tr.tag_id) AS count
FROM tags t
LEFT JOIN tags_r tr ON tr.tag_id = t.id
GROUP BY t.id, t.name
HAVING COUNT(tr.tag_id) = 0
但是如果您希望从tags
表中返回记录tags_r
表中没有匹配行的记录tags_r.tag_id = tags.id
,那么您可以使用NOT EXISTS
:
SELECT
t.id,
t.name
FROM tags t
WHERE NOT EXISTS (
SELECT 1
FROM tags_r tr
WHERE tr.tag_id = t.id
)