2010-04-16 45 views
0

我的数据库中有两个表,其中一个包含这些项目的其他信息的项目列表。另一张表包含这些项目的照片列表。需要一个MYSQL查询来比较两个表,只输出不匹配的结果

项目表为每个项目提供一个唯一的标识符,用于照片表中标识哪个项目已被拍摄。

我需要输出未链接到第二个表中的照片的项目列表。关于如何做到这一点的任何想法?

+0

的可能重复http://stackoverflow.com/questions/1983790/fetch-records-from-one-table-where-theres-not-a-record-in-another – 2010-04-16 15:40:18

回答

0
SELECT * FROM items WHERE id NOT IN (SELECT item_id FROM photos); 

应该是你想要什么

+0

大江户,感谢您的回应 – ee12csvt 2010-04-16 17:08:48

+0

如果我拥有这么多的数据,该怎么办? – 2013-05-19 08:07:44

4
select i.* 
from Items i 
left outer join Photographs p on i.ID = p.ItemID 
where p.ItemID is null 
+0

只有使用连接而不是内部选择语句的答案!请选择这个答案,因为联接更容易阅读,更好的SQL和预型更好,然后内部选择 – 2010-04-16 15:50:47

+0

Orbman, 感谢您的快速反应,我已经适应了我的任务代码,它工作正常。 我必须阅读JOINS,对于编写自己的查询,我很新,但他们似乎使它更容易。 再一次感谢:) – ee12csvt 2010-04-16 17:06:22

+0

@ ee12csvt:所以你需要奖励正确的答案给RedFilter。这就是读你问题的人如何知道正确的答案。 – Jonathan 2010-07-29 20:51:35

0

使用不同的,如果一个项目有一个以上的照片。

SELECT * FROM items WHERE id NOT IN (SELECT distinct(item_id) FROM photos); 
+0

Salil,感谢您的回复 – ee12csvt 2010-04-16 17:08:33

0
SELECT id,name from tbl_item 
WHERE id NOT IN (SELECT distinct(tbl_item.id) FROM tbl_item INNER JOIN tbl_photo ON tbl_photo.pid=tbl_item.id) 
+0

nik,感谢您的回复 – ee12csvt 2010-04-16 17:08:14

+0

这是否需要'id'索引? – 2013-05-19 11:50:51

+0

好吧,不是强迫症,但是你怎么加入两张桌子。索引会让事情变得更简单。虽然你可能会遇到一个独特的问题,我只能在知道它的时候帮助你 – nik 2013-05-20 06:02:48

相关问题