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

标签 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 为 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/

相关文章:

php - WordPress 搜索不适用于超过 87 个字符的搜索词

php - 将 URL 重写为动态页面

php - mysql数据通过php插入两次

php - 单击按钮时将 JSON 从 PHP 返回到 ajax

python - 如何使用 SQLAlchemy/Mysql 存储 3D 图形 (x, y, z) 数据?

php - 单个主键的 2 个外键引用

php - 关于 MySQL/PHP 中事务(或表锁?)的问题

php - ISPConfig SOAP Remote API 添加启用 php 的 Web 域

mysql - #<ActiveRecord::ConnectionAdapters::MysqlAdapter 的未定义方法 `explain'

空对象引用上的 java.lang.String java.lang.Object.toString()'