如何根据另一列的比较结果更新列

时间:2011-10-04 16:37:29

标签: mysql default-value string

我可以使用这些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查询工作。没关系。发布出现类似错误的任何人。

布拉德利

1 个答案:

答案 0 :(得分:1)

行。具体来说,因为所有记录都已将字段'company_country'设置为1,所以mysql以简洁的方式告诉我它没有UPDATEd或更改任何记录。他们从该字段设置为1开始,最后将该字段设置为1.检查您的默认设置,特别是其他人设置了表。我可以输入

UPDATE `individuals` SET `company_country` = 1;

答案仍然是一样的。 0行受影响。