mysql - 查找多表 MySQL 数据库中缺失的行

标签 mysql sql database join

我刚刚开始处理别人组装的 MySQL 数据库,我正在尝试清理它。我的问题有三个相关的表格 - 一个列出拍卖的表格,一个列出每次拍卖中出售的拍品的表格,以及一个列出每个拍品的付款时间表的表格。

拍卖表使用主键来标识每次拍卖,并且每个批处理都有这个主键来标识它与拍卖。同样,每个批处理都有一个不同的 key ,每次付款都使用该 key 来识别该批处理。每场拍卖应至少有一批,每批至少应有一笔付款。拍卖表中没有行的拍卖品不应附加任何付款,拍卖表中没有行的拍卖品不应附加任何拍卖品。我正在尝试制定一个查询,该查询将允许我找到违反此规则的行 - 例如,批处理表中缺少批处理或未附加批处理的额外付款。

目前,我正在执行一个计数不同查询,该查询为我提供了相关表中提到的批处理/拍卖的数量,但如果数字不匹配,它无法帮助我找到哪些缺失。是否有一个查询可以用来查找丢失的行?

谢谢

最佳答案

您可以检查相关表中的键。

Select a.* from Auction a
Left Join Lot l on l.key = a.key
where l.key is null

select * from Auction a
where a.key not in (select key from lot)

类似的东西会对你有帮助。您需要更改表和列名称以匹配,然后为其他适当的情况编写一些脚本,但逻辑应该类似。希望这会有所帮助。

关于mysql - 查找多表 MySQL 数据库中缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7599239/

相关文章:

mysql - docker-compose mysql 容器拒绝访问 wordpress 容器

php - mysql 获取数组错误?

MySQL 5.6 未启动(将 MAMP 2 迁移到 MAMP 4)

sql - 如何在 Linux 上比较两个 SQLite 数据库

php - 提高 `Update` 性能(行锁定问题)

php - 创建表之前检查 MySql 凭据

php - 试图将 php 对象插入 mysql DateTime 对象 "ad_endDate"

MySQL 将列转置为行

sql - 以不同方式比较日期时间值

mysql - mysql 表中的动态列?