Mysql 如何查找对不再存在的ID/记录的引用
假设我有记录客户和记录交易。每个交易都有一个指向客户记录的客户ID字段 显然,如果删除客户记录,必须首先删除所有事务,以避免悬空指针,即相应记录不再存在的ID。但是我继承了这个数据库,我想确保没有过去的编码错误在数据库中留下不一致的地方 如果我想确认没有悬空指针(没有customers.id不存在的customer\u id值),我将使用哪种查询?或者简单地说:Mysql 如何查找对不再存在的ID/记录的引用,mysql,Mysql,假设我有记录客户和记录交易。每个交易都有一个指向客户记录的客户ID字段 显然,如果删除客户记录,必须首先删除所有事务,以避免悬空指针,即相应记录不再存在的ID。但是我继承了这个数据库,我想确保没有过去的编码错误在数据库中留下不一致的地方 如果我想确认没有悬空指针(没有customers.id不存在的customer\u id值),我将使用哪种查询?或者简单地说: SELECT Customer_id FROM TRANSACTION TRX WHERE NOT EXISTS(SELECT 1 F
SELECT Customer_id FROM TRANSACTION TRX
WHERE NOT EXISTS(SELECT 1 FROM Customer WHERE CustomerId = TRX.Customer_Id)
SELECT record_id FROM records_table WHERE customer_id NOT IN (SELECT customer_id FROM customer_table);
这将显示与customers表中不存在的customer_id关联的所有记录
然后删除:
DELETE FROM records_table WHERE customer_id NOT IN (SELECT customer_id FROM customer_table);
一个
左连接
查询。谷歌,试试看。您可能还想看看外键及其DELETE CASCADE
函数。