发现很多与没有关系

时间:2015-04-28 08:49:07

标签: mysql sql database many-to-many

我有一个items表,一个tags表和一个reletations表。 我需要找不到标记的项目。

使用此(工作)查询,我找到每个项目的标签号:

SELECT i.id, i.text, COUNT( ti.item ) AS count
FROM items AS i
JOIN topic_item AS ti ON ti.item = i.id
GROUP BY ti.item

如果尝试使用以下命令修改查询:

ti.item != i.id

或我添加

WHERE count = 0

但这不是正确的方法。 这是正确的做法吗?

2 个答案:

答案 0 :(得分:1)

尝试left join,如下所示

SELECT i.id, i.text, COUNT( ti.item ) AS count
FROM items AS i
LEFT JOIN topic_item AS ti ON ti.item = i.id
WHERE ti.item is null
GROUP BY ti.item

答案 1 :(得分:1)

您可以使用left join,并获取没有匹配标记的项目:

SELECT i.id, i.text
FROM items AS i
LEFT JOIN topic_item AS ti ON ti.item = i.id
WHERE ti.item is null

您还可以使用not exists

SELECT i.id, i.text
FROM items AS i
WHERE not exists(
  select * from topic_item AS ti
  where ti.item = i.id
)