我可以使用这些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语句不起作用。这是一个错误吗?
该死!我在发布之前想出来了。所以我会给任何想知道答案的人。
我不小心添加了默认值为1的字段company_country
,因此所有记录的默认值都为“1”。所以mysql试图更新字段,但发现它们已经设置为1.将它们清空,允许UPDATE查询工作。没关系。发布出现类似错误的任何人。
布拉德利
答案 0 :(得分:1)
行。具体来说,因为所有记录都已将字段'company_country'设置为1,所以mysql以简洁的方式告诉我它没有UPDATEd或更改任何记录。他们从该字段设置为1开始,最后将该字段设置为1.检查您的默认设置,特别是其他人设置了表。我可以输入
UPDATE `individuals` SET `company_country` = 1;
答案仍然是一样的。 0行受影响。