2016-11-09 53 views
1

我有這個疑問MYSQL:在CONCAT使用列名()函數給出了語法錯誤1064

UPDATE `fitment_drums` SET `liters` = CONCAT(`liters`,'.0') WHERE `liters` LIKE '_' 

導致這個錯誤:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''.0') FROM `fitment_drums` WHERE `liters` LIKE '_'' at line 1

當我代替普通字符串,如。 CONCAT ('asdf','.0')它工作正常。我已經嘗試使用select語句作爲參數,並且也嘗試使用臨時表:

CREATE TEMPORARY TABLE t1 (SELECT * FROM `fitment_drums` WHERE liters like '_') 
UPDATE `fitment_drums` SET liters = CONCAT(t1.liters,'.0') where t1.id = id 
+2

是一個數字字段嗎? – grahamj42

+0

這是一個varchar字段。 – qSort

+0

您的CREATE TABLE語句後面沒有分號。 –

回答

1

好的,所以我找到了「解決方案」。我在模擬模式下運行查詢,導致上面發佈錯誤。所以我備份了表格並在實時模式下執行了查詢,並且它工作正常。 (爲了記錄,我使用的是phpMyAdmin)

很奇怪。

感謝大家試圖幫助!

1

既然您發現您使用的是phpMyAdmin,那麼您應該知道臨時表會在數據庫連接結束時自動刪除。

phpMyAdmin中的每個頁面視圖都是一個單獨的PHP請求,因此是單獨的數據庫連接。

因此,如果您在phpMyAdmin中使用CREATE TEMPORARY TABLE,那麼當您運行UPDATE時,臨時表不再存在。