MySQL DB中有2个表:
Table 1 : id, galleryname
Table 2 : galleryid, <many other fields...>
使用PHP,我需要根据其ID来选择表1中的所有行,其中id(galleryid)未出现在表2中。
实施例: 表1
1, flowers
2, water
3, mountains
4, winter
表2
3, ...
将从表1中返回这些行
1, flowers
2, water
4, winter
我不确定如何解决这个问题。我非常擅长MySQL的基础知识,但我怀疑这是一个JOIN或UNION,不属于我的联盟。
感谢任何帮助。
答案 0 :(得分:26)
试试这个:
SELECT * FROM table1
WHERE id NOT IN
(SELECT galleryid FROM table2)
或
SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.galleryid
WHERE table2.galleryid IS NULL
答案 1 :(得分:8)
左连接带来所有t1记录,然后过滤掉那些有t2.galleryid NULL(t2中没有记录)的记录
SELECT id, galleryname
FROM table1 AS t1
LEFT OUTER JOIN table2 AS t2 ON t1.id = t2.galleryid
WHERE t2.galleryid IS NULL
答案 2 :(得分:2)
SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.galleryid
WHERE table2.galleryid IS NULL
答案 3 :(得分:1)
有人发布了一个答案(然后删除了它),它只给了我两个人的记录。这里的所有其他人似乎都给出了错误,但是使用原始帖子我做了一个更改并且它有效。
原件:
SELECT * FROM table1 INNER JOIN table2 ON galleries.id = images.galleryid
(这给了我两个中的那个)
添加!:
SELECT * FROM table1 INNER JOIN table2 ON galleries.id != images.galleryid
(这给了我所需要的东西)