如何从表B中选择属于表A的缺失表行?

时间:2011-03-25 10:17:32

标签: php mysql

table1
id, name, desc

1, Abc, some desc
2, Def, more desc
4, Jkl, another desc

table2 
id, table1_id, title
1,  1, My title
2,  1, Another title
3,  3, Yet another title

表1中包含ID为“缺失”的行。但是如果你注意到,table2中有一个缺少id的引用。所以我的问题是我如何选择table2的所有行,这些行引用了table1_id(s),这些行在table1中不再可用?

我不是很擅长mysql查询,并试过像... SELECT b。* FROM table2 b INNER JOIN table1 a ON b.table1_id!= a.id和其他一些但无法获得所需的结果。

你能想到如何实现这一目标吗? 感谢

1 个答案:

答案 0 :(得分:3)

SELECT b.*
FROM table2 b
LEFT JOIN table1 a ON b.table1_id = a.id
WHERE a.id is null

只是一些小的改动,从INNER到LEFT OUTER,条件是a.id为null(表a中没有匹配)。

对于删除,请使用

DELETE FROM table2
WHERE table1_id not in (select id from table1)