Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 找到没有关系的多对多_Mysql_Sql_Database_Many To Many - Fatal编程技术网

Mysql 找到没有关系的多对多

Mysql 找到没有关系的多对多,mysql,sql,database,many-to-many,Mysql,Sql,Database,Many To Many,我有一个项目表,一个标签表和一个相关表。 我需要找到未标记的物品 通过此(工作)查询,我找到每个项目的标签号: 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 但这不是正确的方法。 哪一种方法

我有一个
项目
表,一个
标签
表和一个
相关
表。 我需要找到未标记的物品

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

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
但这不是正确的方法。
哪一种方法是正确的?

请尝试下面的
左连接

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

您可以使用
左联接
,并获取没有匹配标记的项目:

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
您还可以使用
不存在

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

结果仅显示第一行。在我的例子中,这没关系。第一个查询的结果只显示第一行,第二行运行得很好。谢谢@WalterVilla:当我测试第一个查询时,我会得到没有主题的所有行: