カラムはCOLA、COLB、COLCおよび(COLA、COLB)は複合主キーです。MYSQLデータベースTABLE1にテーブルがあります。新しい値は、主キーのための新たなペアを持っている場合は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行。
ので表には、私は2つのクエリを実行していたこれを実現するために
-----------------------
| 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'));
しかし、それは動作しません。最後の行も同様に削除されます。 だから
- クエリを実装する方法は?
- 1つのクエリにまとめることはできますか?事前に
THANKS :)
である必要があります。単一のクエリからの挿入(またはアップアップ)と削除はできません。 –
ありがとうございます。もっと良い方法はありますか? – Sushovan
2つのクエリの現在の方法をそのまま使用できます。親切にもMySQLの方が回答を投稿します。 –