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和其他一些但无法获得所需的结果。
你能想到如何实现这一目标吗? 感谢
答案 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)