我有一个问题,有时由于人为错误,关系数据库中会出现 relation_id,但没有真正的 id。
SELECT relation_id
FROM relations
WHERE relation_id NOT
IN (
SELECT id
FROM relations
)
这将返回发生这种情况的字段,我想将 relation_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和玩。 )
关于MySQL - 选择,没有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11140878/