首页 > 解决方案 > IS NULL 时无法更新 mysql

问题描述

当我运行以下 MYSQL SELECT 查询时,它返回一堆记录:

SELECT *
FROM `wp_usermeta`
WHERE `meta_key` = 'country' 
AND `meta_value` IS NULL

当我运行这个 UPDATE 查询时,它可以工作并更改一堆记录

UPDATE
    `wp_usermeta`
SET
    `meta_value` = 'xxx'
WHERE
    `meta_key` = 'country' AND `meta_value` = 'fr'

这同样适用,如果条件是这样,它会更改记录:

WHERE
    `meta_key` = 'country' AND `meta_value` IS NOT NULL

但是......当我尝试运行以下 - 这是我所追求的 - 它根本找不到任何记录:

UPDATE
    `wp_usermeta`
SET
    `meta_value` = 'xxx'
WHERE
    `meta_key` = 'country' AND `meta_value` IS NULL

出于某种原因, IS NULL 不适用于此。我知道有 NULL 记录,因为第一个 SELECT 查询找到了它们;为什么它不能与 UPDATE 一起使用?

标签: mysqlselect

解决方案


多么奇怪。似乎当我在 phpMyAdmin 中尝试 SIMULATE QUERY 时,使用 IS NULL 它报告没有发现要更新的内容。(使用其他值模拟查询显示可能的结果。)

但是当我运行实际查询时,它实际上确实更新了一大堆行。

因此,这似乎与 UPDATE SIMULATE QUERY 不显示 IS NULL 的可能结果有关。


推荐阅读