我想用插入和更新的sql語句。先插入,然後用SQL語句更新表格
我的表如下:
|c1|c2|c3|c4|c5
|1 2 a b c
|1 3 e f g
C3,C4,C5可以有不同的值。該行可以與C1和C2列組合使用。我需要能夠檢查第一行是否與值c1,c2不存在然後插入數據。如果c1,c2已經具有例如(1,2)的值並且如果數據以c1,c2的相同值返回,則使用最新值更新c3,c4,c5。
我嘗試使用下面的查詢
INSERT INTO t1 (c1,c2,c3,c4,c5)
VALUES ('1','2','a','b','c')
ON DUPLICATE KEY
UPDATE c3='e',c4 = 'f',c5='g';
我得到一個ORA錯誤如下 SQL命令沒有結束正常(ORA-00933)從鷺
響應後更新
MERGE INTO table1 t 使用(選擇'000004'作爲SENDER,'Receiver'作爲RECEIVER,'1030'作爲IDENTIFIER,'2016'作爲CREATI (t.SENDER = s.SENDER和t.IDENTIFIER = s.IDENTIFIER) 當匹配時,則更新設置t.CREATIONDATEANDTIME ='1213',ONDATEANDTIME,'2'爲ACKCODE,'測試'爲來自表1的ACKDESCRIPTION) ON 't'RECEIVER ='hello' WHEN NOT MATCHED THEN INSERT(t.SENDER,t.RECEIVER,t.IDENTIFIER,t.CREATIONDATEANDTIME,t.ACKCODE,t.ACKDESCRIPTION) VALUES(s.SENDER,s.RECEIVER,s .IDENTIFIER,s.CREATIONDATEANDTIME,s.ACKCODE,s.ACKDESCRIPTION)
輸出查詢: 方案1:當沒有數據相匹配的條件(t.SENDER = s.SENDER和t.IDENTIFIER = S。 IDENTIFIER),我得到如下錯誤 ORA-30926:無法在源表中獲得穩定的行集。
原因:由於dml活動較大或where子句中存在非確定性活動,無法獲得穩定的一組行。
操作:刪除任何非確定性where子句並重新發出DML
方案2:當有數據相匹配的條件(t.SENDER = s.SENDER和t.IDENTIFIER = s.IDENTIFIER)然後在表中,我可以看到5個新條目。
您能否請幫助。
看起來像一個Oracle錯誤信息不是mysql ?! – Jens
oracle可能擁有mysql,但這並不意味着oracle RDBMS會突然啓動支持mysql特定的sql擴展...... –
這被標記爲Mysql,但是你有一個Oracle錯誤。你實際使用哪個數據庫? – HLGEM