我有两个相互关联的表:一个存储一些常规结果(表1),另一个存储每个结果的N行(表2)。
table2中的每个记录都有一个记录table1引用行的“ auto_id”的字段(该字段称为“ ref_id”)
我有意从table1中删除了一些记录,但是我将引用的行留在了table2中。
如何在表2中找到所有带有无效“ ref_id”且链接到表1中不再存在的“ auto_id”的行?
我在想类似
SELECT *
FROM table2
WHERE NOT EXISTS(
SELECT auto_id
FROM 'table1'
WHERE 'table2.res_id' = auto_id
)
但显然有一些错误。
谢谢您的帮助!
最佳答案
您使用了错误的引号。单引号(撇号或ASCII 39)用于文字字符串。最简单的解决方案是删除引号:
SELECT *
FROM table2
WHERE NOT EXISTS(
SELECT auto_id
FROM table1
WHERE table2.res_id = auto_id
);
如果要在MySQL中引用标识符,请使用反引号(ASCII 96)。
SELECT *
FROM `table2`
WHERE NOT EXISTS(
SELECT auto_id
FROM `table1`
WHERE `table2`.`res_id` = `auto_id`
);
关于mysql - 根据另一个表的结果刷新表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28670726/