MySQL:使用限制查询更新记录
使用 MySQL 时,可能会遇到需要更新特定记录的情况表中的行范围。本文解决了在 UPDATE 查询中使用 LIMIT 子句是否可行的问题,并提供了如何实现此目的的指导。
语法错误和正确用法
您的初始查询尝试更新从 1001 条记录开始的行以及接下来的 1000 条记录。但是,使用的语法不正确。在 MySQL 中,LIMIT 子句用于限制选定行的数量,而不是更新行的数量。更新特定范围行的正确方法是通过子查询。
例如,要更新 p_id 设置为 3 的前 1000 行,您可以使用以下命令:
UPDATE `oltp_db`.`users` SET p_id = 3 WHERE id IN ( SELECT id FROM ( SELECT id FROM `oltp_db`.`users` ORDER BY id ASC LIMIT 0, 1000 ) tmp )
处理 NULL 值
在第二个查询中,您尝试使用以下命令更新行p_id 设置为 NULL。但是,查询会失败,因为在相等性检查中无法将 NULL 值与非 NULL 值进行比较。要更新具有 NULL p_id 值的行,您可以使用 IS NULL 和 COALESCE() 函数:
UPDATE `oltp_db`.`users` SET p_id = COALESCE(3, p_id) WHERE p_id IS NULL
通过遵循这些准则,即使在处理 NULL 时,您也可以有效地更新 MySQL 表中的特定行价值观。
以上是如何使用 LIMIT 子句更新 MySQL 中特定范围的行?的详细内容。更多信息请关注PHP中文网其他相关文章!