我可以使用下面的sql语句轻松地找到我想要的行:
SELECT COUNT(*) FROM `individuals` WHERE `company_zip` != '';
SELECT COUNT( * ) FROM `individuals` WHERE length( `company_zip` ) > 0;
SELECT COUNT( * ) FROM `individuals` WHERE strcmp( `company_zip`, '' ) != 0;而且可能还有100种其他方法可以做到这一点。
然而..。
尝试在UPDATE语句中使用这些语句
UPDATE `individuals` SET `company_country` = 1 WHERE `company_zip` != '';
UPDATE `individuals` SET `company_country` = 1 WHERE length( `company_zip` ) > 0;
UPDATE `individuals` SET `company_country` = 1 WHERE strcmp( `company_zip`, '' ) != 0;我得到的回复如下:
0 row(s) affected. ( Query took 0.5920 sec )我承认,我已经厌倦了查看手册页面和谷歌搜索来解决这个问题。我在这里遗漏了哪条mysql原则?计算SELECT语句中的行数很容易,但相同的标准不适用于UPDATE语句。这是一个bug吗?
该死的!我是在发帖前弄明白的。所以我会给任何想知道答案的人。我不小心添加了默认值为1的字段company_country,因此所有记录的默认值都为'1‘。因此,mysql试图更新字段,但发现它们已经设置为1。清除它们可以使更新查询正常工作。不要紧。发帖给犯了类似错误的人。
布拉德利
发布于 2011-12-17 04:23:44
好的。具体地说,因为所有记录都已经将字段'company_country‘设置为1,所以mysql以一种简洁的方式告诉我,它没有对任何记录执行UPDATEd或更改任何记录。他们一开始将该字段设置为1,最后将该字段设置为1。检查您的默认设置人员,特别是其他人设置了该表。我本可以输入
UPDATE `individuals` SET `company_country` = 1;答案仍然是一样的。0行受影响。
https://stackoverflow.com/questions/7651187
复制相似问题