我想將欄位(整數或下拉清單)中包含的值減 1。我嘗試了這 3 個查詢,但沒有一個可以按預期工作:
UPDATE `my_table` SET `my_field` = 'my_field-1' WHERE `other` = '123' UPDATE `my_table` SET `my_field` = 'my_field' -1 WHERE `other` = '123' UPDATE `my_table` SET `my_field` = '-1' WHERE `other` = '123'
我在此處和 Google 上進行了搜索,但找到的所有解決方案都是相似的。知道為什麼這在我這邊不起作用嗎?
P粉2686548732023-10-26 10:14:06
嘗試從列名稱中刪除單引號,否則它將被視為字串「my_field-1」或在列名稱周圍使用反引號
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
或
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE `other` = '123'
P粉7627302052023-10-26 09:15:35
您不需要任何引號。
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
要理解,這就像任何語言中的經典情緒:「我希望my_field
等於my_field
(當前值)減去1
.
如果加引號,則表示「我希望 my_field
等於字串:
'my_field-1'
(用於您的第一個查詢)'my_field' - 1
(這沒有任何意義,至少對我來說:字串減去整數的結果是多少?)'-1'
,如果您的欄位具有 INTEGER 符號類型,則該值將轉換為 -1。 在某些情況下(如果您的欄位名稱中有空格或特殊字元),您可以用「反引號」包圍欄位名稱:
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'