首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据对另一列的比较结果更新一列

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

Stack Overflow用户
提问于 2011-10-05 00:37:29
回答 1查看 107关注 0票数 1

我可以使用下面的sql语句轻松地找到我想要的行:

代码语言:javascript
复制
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语句中使用这些语句

代码语言:javascript
复制
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;

我得到的回复如下:

代码语言:javascript
复制
0 row(s) affected. ( Query took 0.5920 sec )

我承认,我已经厌倦了查看手册页面和谷歌搜索来解决这个问题。我在这里遗漏了哪条mysql原则?计算SELECT语句中的行数很容易,但相同的标准不适用于UPDATE语句。这是一个bug吗?

该死的!我是在发帖前弄明白的。所以我会给任何想知道答案的人。我不小心添加了默认值为1的字段company_country,因此所有记录的默认值都为'1‘。因此,mysql试图更新字段,但发现它们已经设置为1。清除它们可以使更新查询正常工作。不要紧。发帖给犯了类似错误的人。

布拉德利

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-17 04:23:44

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

代码语言:javascript
复制
UPDATE `individuals` SET `company_country` = 1;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7651187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档