2012-05-07 76 views
1

我有一個包含配置文件的表。如果有用戶#:userId的配置文件,我想更新它。如果該用戶沒有配置文件,我想插入它。我想這個SQL查詢,但沒有奏效:使用ON DUPLICATE KEY UPDATE的SQL查詢不起作用

 
    INSERT INTO profiles 
    SET name = :name, 
     website = :website, 
     bio = :bio 
    WHERE user = :userId 
    ON DUPLICATE KEY UPDATE 
     name = :name, 
     website = :website, 
     bio = :bio 

「用戶」是主鍵

編輯:我發現在我的SQL錯誤,當它看起來是這樣的,它只是罰款:

 
    INSERT INTO profiles 
    SET user = :userId, -- <-- mistake was here 
     name = :name, 
     website = :website, 
     bio = :bio 
    ON DUPLICATE KEY UPDATE 
     name = :name, 
     website = :website, 
     bio = :bio 

謝謝大家!

+1

你說**用戶**是主鍵,但這不在您的查詢中。 – McGarnagle

回答

2

您的INSERT語法不正確(它看起來像修改後的UPDATE語句)。嘗試是這樣的:

INSERT INTO profiles (name, website, bio) 
     VALUES (:name, :website, :bio) 
    ON DUPLICATE KEY UPDATE website = :website, bio = :bio; 

documentation for INSERT ... ON DUPLICATE KEY UPDATE進一步的信息和示例。

+0

INSERT INTO ... SET語法實際上是正確的,它可以工作(http://milov.nl/2836)。但是,當我在ON DUPLICATE KEY UPDATE中使用此語法時,它變得不正確。它是MySQL的「特色」? – user1267570

+0

噢,我需要將配置文件的行「綁定」到用戶的id。 – user1267570

+0

INSERT INTO ... SET不是標準SQL,必須是Mysql擴展。 –

相關問題