MySQL选择一个表中不在另一个表中的字段

Chr*_*ngs 11 mysql

我在MySQL DB中有2个表:

Table 1 : id, galleryname
Table 2 : galleryid, <many other fields...>
Run Code Online (Sandbox Code Playgroud)

使用PHP,我需要根据其ID来选择表1中的所有行,其中id(galleryid)未出现在表2中.

示例:表1

1, flowers
2, water
3, mountains
4, winter
Run Code Online (Sandbox Code Playgroud)

表2

3, ...
Run Code Online (Sandbox Code Playgroud)

将返回表1中的这些行

1, flowers
2, water
4, winter
Run Code Online (Sandbox Code Playgroud)

我不确定如何解决这个问题.我非常擅长MySQL的基础知识,但我怀疑这是一个JOIN或UNION,不属于我的联盟.

任何帮助表示赞赏.

Mar*_*rco 30

试试这个:

SELECT * FROM table1
WHERE id NOT IN
    (SELECT galleryid FROM table2)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM table1
LEFT JOIN table2
    ON table1.id = table2.galleryid
WHERE table2.galleryid IS NULL
Run Code Online (Sandbox Code Playgroud)

  • @AdamWenger:是的,我确定我必须......我忘记了!谢谢你的建议!! :) (2认同)

Ada*_*ger 9

左连接带来所有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
Run Code Online (Sandbox Code Playgroud)