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 为 3 的行“缺失”。但如果您注意到,表 2 中有一个对这个缺失 id 的引用。所以我的问题是如何选择 table2 中引用 table1_id 的所有行,这些行在 table1 中不再可用?
我不太擅长 mysql 查询并尝试过类似的东西...... SELECT b.* FROM table2 b INNER JOIN table1 a ON b.table1_id != a.id 和其他一些但无法获得所需的结果。
您能否提出一些如何实现这一目标的想法? 谢谢
最佳答案
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)
关于php - 如何从表 B 中选择属于表 A 的缺失表行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431106/