如何在MySQL列中用NULL替换特定的datetime值?

时间:2016-01-28 22:23:34

标签: mysql sql datetime replace null

不是SQL专家,我在MySQL中使用NULL替换特定日期时间值时遇到了麻烦。由于从没有该日期的Excel电子表格中填充行(即空单元格),所讨论的可空last_login DATETIME列可能具有值'1900-01-01 00:00:00.000'。每个数据库行由id INT列唯一标识。我试过了:

UPDATE user_profiles
SET last_login = NULL
WHERE id IN
(SELECT id FROM user_profiles WHERE last_login = '1900-01-01 00:00:00.000');

但MySQL(我怀疑还有其他数据库)抗议WHERE子句适用于与正在更新的列相同的列。解决方案是什么?

2 个答案:

答案 0 :(得分:2)

您不必在where语句中使用子查询:

UPDATE user_profiles
SET last_login = NULL
WHERE last_login = '1900-01-01 00:00:00.000';

答案 1 :(得分:0)

如果要使用具有相同字段的子查询,则需要标识表。通过使用表名或给它们别名。所以使用你的代码,这应该工作:

UPDATE user_profiles u
SET u.last_login = NULL
WHERE u.id IN
(SELECT x.id FROM user_profiles x WHERE x.last_login = '1900-01-01 00:00:00.000');

话虽如此,就像大多数人所说的那样,你不需要使用子查询:

UPDATE user_profiles
SET last_login = NULL
WHERE last_login = '1900-01-01 00:00:00.000';