mysql - 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 一起使用?
解决方案
多么奇怪。似乎当我在 phpMyAdmin 中尝试 SIMULATE QUERY 时,使用 IS NULL 它报告没有发现要更新的内容。(使用其他值模拟查询显示可能的结果。)
但是当我运行实际查询时,它实际上确实更新了一大堆行。
因此,这似乎与 UPDATE SIMULATE QUERY 不显示 IS NULL 的可能结果有关。
推荐阅读
- angular - 在 Angular 中,使用 PrimeNG,如何设置禁用一些 p-selectButton 选项?
- elixir - Comeonin.Bcrypt checkpw 方法在我重置密码后返回 false - Elixir
- node.js - 在 Heroku 中每 30 秒运行一次任务
- java - Android MVP 我应该在哪里有一个 TextWatcher
- java - 矩阵大小的限制
- python - 更改Excel工作表中现有选项卡的列宽
- hybris - 带有 wro4j 的 Hybris 没有拉入插件 js 文件
- excel - Excel js api 大数据
- ansible - BIGIP 的 Ansible 模块 bigip_pool_member 始终返回“已更改”状态
- arrays - 列出字符串数组中所有元组的算法