我有一个问题,有时由于人为错误,关系的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。 )