我有一個運行MySQL查詢的PHP腳本。使用IF()與MySQL中的ON DUPLICATE KEY UPDATE
$query = "INSERT INTO table (col1, col2)
VALUES('$val1', '$val2')
ON DUPLICATE KEY UPDATE col2= IF(IS NOT NULL '$val1', 'test', 'col2)";
這是我想要做的: Col1是主鍵。如果有重複,它會檢查col2的插入值是否爲空。如果不是,則會用值更新,否則值將保持不變。
此插入失敗。當我嘗試在SQLyog的手動運行(代替變量將實際值),我收到以下錯誤: 錯誤代碼: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 'IS NOT NULL.....'
我已經檢查了MySQL參考手冊的NOT IS NULL比較運算符(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_is-not-null),並且還用於INSERT ... ON DUPLICATE KEY UPDATE語法(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html),並且相信我正確使用了兩者,但顯然情況並非如此。
我在做什麼錯?
僅供參考,我使用的是MySQL 5,腳本在RHEL5服務器上運行。
非常感謝您的幫助!另外,'測試'的價值是一個疏忽。這是我在測試時用於col2的一個值,並且忘記將其刪除。 – 2012-04-27 17:45:59