gpt4 book ai didi

mysql - MySQL UPDATE 的 WHERE 子句中的无效条件 - 更新一切 - 而不是什么都没有

转载 作者:行者123 更新时间:2023-11-29 01:48:23 25 4
gpt4 key购买 nike

我想写的:

UPDATE items_ordered_list ords
SET ords.last_ordered='2019-10-16 10:49:23'
WHERE ords.cust_id='11656165';

实际上写了什么:

UPDATE items_ordered_list ords
SET ords.last_ordered='2019-10-16 10:49:23'
WHERE ords.cust_id-'11656165';

它没有给我某种错误,即 WHERE 子句不是逻辑表达式 - 它只是愉快地更新所有内容。我有一个备份 - 以及恢复以前值的方法 - 但是 - “-”与键盘上的“=”相邻 - 我花了一段时间才看到这个。

我用 SELECT/LIMIT 语句进行了尝试 - 果然 - 它带回了我在 LIMIT... 中设置的记录数量

这是缺陷……还是“设计使然”?有什么方法可以使“ords.cust_id-'11656165'”的计算结果为“TRUE”???

请告诉我 - 通常,对于大的/危险的更新,我会先执行 SELECTEXPLAIN - 只是为了确保返回的 SCOPE 是合理的- 这段代码,我只是更改了 cust_id - 但是 - 我不小心删除了“=” - 当我重新输入它时 - 我(显然)打错了......任何帮助/建议将不胜感激! !

谢谢!

最佳答案

假设您的所有 cust_id 客户 ID 值都小于大于整数 11656165,那么通过转换规则,以下表达式将是一个正数/负数,其计算结果也为真,例如

ords.cust_id - '11656165'

例如:

SELECT 11650000 - '11656165'; -- returns -6165

和:

SELECT
IF(11650000 - '11656165', 'TRUE', 'FALSE') -- returns TRUE

这里的教训是在运行代码之前检查你的代码。在这种情况下,拼写错误仍然会导致有效的更新查询,这可能会损坏您的数据。

关于mysql - MySQL UPDATE 的 WHERE 子句中的无效条件 - 更新一切 - 而不是什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58423837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com