2011-10-04 51 views
1

更新基於比較結果專欄中,我可以很容易地使用這些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

您應該添加您的答案,然後接受它作爲解決方案。 – Sonny

回答

1

好的。具體而言,因爲所有記錄都已將字段'company_country'設置爲1,所以mysql以簡潔的方式告訴我,它沒有更新或更改任何記錄。他們開始將該字段設置爲1,最後將該字段設置爲1.檢查默認人員,尤其是其他人設置表格。我本來可以輸入

UPDATE `individuals` SET `company_country` = 1; 

答案仍然是一樣的。 0行受影響。