我跑了一些查詢,並得到了一組元組,如((A1,B1),(A2,B2),(A3,B3)....)。 我需要檢查一個元組是否存在於表XYZ(A,B,C)中。如果存在,則更新C否則將(Ax,Bx,C)插入表中。 我嘗試使用下面的查詢,但它不起作用。有沒有其他方法?更新元組是否在集合中,否則插入MySQL
CASE WHEN EXISTS (SELECT * from XYZ as t where (t.A, t.B) in (select u.A, u.B from diff_table as u)) THEN
THEN UPDATE XYZ as v SET C = 1 WHERE (v.A, v.B) = (t.A, t.B) ELSE
INSERT INTO XYZ (A,B,C) values (u.A, u.B, 1) END;
看看到['INSERT ... ON DUPLICATE KEY UPDATE'(https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html) – Barranka
A和B的組合可以是非唯一的 – arg21
如果它們可以是非唯一的,那麼你有一個問題:你如何找出哪些元組將被更新,哪些不會被更新?除此之外,您將永遠面臨插入重複條目的風險。考慮爲這些字段添加一個唯一索引並使用'insert ... on duplicate key update'。 – Barranka