2015-10-18 70 views
1

我有一個表更新行,如果一個特定的列值不同,否則插入新行

UserId Name Age 
1   Lisha 23 
2   Ankur 21 
3   Karan 22 

對於特定的給定的用戶ID,我想更新的時代,如果給定的年齡是不同的,那麼目前的年齡。否則,如果UserId不存在,我想插入一個新行。

如何在單個SQL語句中執行此操作。

+0

INSERT INTO表(用戶ID,姓名,年齡) VALUES(3,卡蘭,26) ON DUPLICATE KEY UPDATE年齡= 26; – Aditya

+0

在Google中搜索此操作的關鍵字是UPSERT。您也可以搜索「MYSQL中的Oracle MERGE等效項」。我不知道答案,但檢查這些。 –

+1

用'insert on duplicate key update'聲明,但是唯一索引的存在是至關重要的。如果沒有這樣的密鑰,不要去讀這 – Drew

回答

1

MySQL有一個整齊的語法,儘管它的方式正好相反 - 您定義了要插入的內容,並且如果生成重複的鍵錯誤,則可以定義您希望如何更新而不是數據:

INSERT INTO users 
(userid, age) 
ON DUPLICATE KEY UPDATE age = VALUES(age) 
+0

它給語法錯誤。如果我運行這個, $ sql = INSERT INTO'user'('userid','name','age')VALUES(2,'ankur',23)重複鍵更新新增一行。 – karan

相關問題