我有一个问题,有时由于人为错误,关系的id_id将出现在数据库中,并且没有真正的ID。

SELECT relation_id
FROM relations
WHERE relation_id NOT
IN (
    SELECT id
    FROM relations
)


这将返回发生这种情况的字段,我想将relationship_id的值切换为NULL。

这是到目前为止我得到的:

UPDATE `relations` SET relation_id = NULL WHERE relation_id NOT IN (SELECT id FROM relations)


偏离路线适用于任何其他表,仅不适用于关系。有人知道解决方法吗?我敢肯定有办法

最佳答案

好吧,错误原因实际上已在错误消息本身中得到了很好的描述……您无法在内部SELECT中指定要更新的表。但是谁说我们不能更深入?

UPDATE relations
   SET relation_id = NULL
 WHERE relation_id NOT IN (
       SELECT id FROM (SELECT id FROM relations) AS take_that_sql
);


这是一个SQLFiddle。 )

10-05 23:42