2014-03-04 136 views
1

我有這樣的MySQL更新查詢:SQL更新查詢在MySQL

"INSERT INTO $tbl_name 
(status, name, ...) 
VALUES 
('$status', '$name'...) 
ON duplicate KEY UPDATE 
status=values(status), name=values(name)... 
"; 

它有很多的表列,以便保持它短我心底得到正確的問題:

代替更新當前表格行,它會用新的ID複製它。

注意:行中有獨特的字段。任何想法我做錯了什麼?

+0

是你的鑰匙自動編號字段? –

+0

桌上唯一的鑰匙是什麼? '重複密鑰更新'使用此信息來確定什麼是重複的。 –

+0

ID鍵是自動編號。還有3個獨特的鍵:/數據庫不是我自己設定的,我很願意編輯它 – Newbie

回答

0

檢查存在

IF (SELECT 1 = 1 FROM Table WHERE Key=...) THEN 
BEGIN 
    UPDATE Table Set status=values(status), name=values(name)... WHERE Key=...; 
END; 
ELSE 
BEGIN 
    INSERT INTO Table (FieldValue) VALUES(''); 
END; 
END IF; 
0

爲什麼不使用

UPDATE table_name 
SET column1=value1,column2=value2,... 
WHERE some_column=some_value; 

?做任何插入/更新前

+0

由於頁面的功能需要能夠插入或更新/編輯已插入的信息(用戶常規信息) – Newbie