MySQL - 选择,没有问题

标签 mysql select phpmyadmin

我有一个问题,有时由于人为错误,关系数据库中会出现 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/

相关文章:

mysql - 从 Coldfusion 导入 MySQL 时如何检查 MySQL 中的重复条目?

PhpMyAdmin 自动刷新 MySQL 表

mysql - 为什么 PHPMyAdmin 不能有效地改变我的表?

mysql - 使用javafx将图像上传到数据库

php - 尝试清理用户输入以动态设置 PearDB 准备语句中的列名称

MySQL 选择 "between"和 "AND"

mysql - mysql是否支持双向复制?

mysql - 如何在不使用 between 或 >= 的情况下从给定的月份中进行选择?

当前日期所在的MySQL查询值

c - 如果用户输入某些内容,则在语句之间切换 : infinitely and with a timeout