我有两个相互关联的表:一个存储一些常规结果(表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/

10-15 05:41