我在MYSQL數據庫TABLE1中有一個表,COLA,COLB,COLC和(COLA,COLB)列是複合主鍵。這樣在MYSQL中UPDATE/INSERT INTO/DELETE FROM表
-----------------------
| COLA | COLB | COLC |
-----------------------
| A | B | C |
-----------------------
| A | Q | D |
-----------------------
| A | E | J |
-----------------------
| B | W | P |
-----------------------
東西也有後臺腳本,將數據傳送給Java程序,應在下列條件下更新表:
- 如果新值有主鍵的任何一雙新然後INSERT新行插入表中。
- 如果新值有任何公共對主鍵然後UPDATE該表。
- DELETE所有其他行其中COLA值匹配與新值。
如果新vaues是( 'A', 'B', 'L'),( 'A', 'Y', 'd'),( 'A', 'Q', 'Z')那麼就應該:
- UPDATE 和第二行。
- 插入新行('A','Y','D')。
- 刪除只有第3行。
所以表應該看起來像
-----------------------
| COLA | COLB | COLC |
-----------------------
| A | B | L |
-----------------------
| A | Q | Z |
-----------------------
| B | W | P |
-----------------------
| A | Y | D |
-----------------------
要實現這一點,我正在運行兩個查詢:
INSERT INTO TABLE1 VALUES('A','B','L'),('A','Y','D'),('A','Q','Z') ON DUPLICATE KEY UPDATE COLC=VALUES(COLC);
這是工作,我想要的方式。但是,當我試圖刪除我得到其他行成問題,我想做的是:
DELETE FROM TABLE1 WHERE NOT ((COLA='A' AND COLB='B') OR (COLA='A' AND COLB='Y') OR (COLA='A' AND COLB='Q'));
但它不工作。因爲它也會刪除最後一行。 所以
- 如何實現查詢?
- 它可以被分成一個查詢?
感謝提前:)
從單個查詢中插入(或插入)和刪除是不可能的。 –
謝謝。有沒有更好的方法? – Sushovan
您可以繼續使用當前的兩種查詢方法。一些好心的MySQL人員會發表一個答案。 –