あなたが本当に何をしようとしているのかわからない。in
しかし、クエリによると、テーブルは、句とwildcard
inlike
演算子で受け入れられるすべてのIDを削除します。IDは.で始まりますc
。IN
これを試して、 caluseとLIKE
..にあるものを除くすべてを保持します。
あなたの質問はすでに正しい質問を言っています:
上記のリストにdelete
あるすべての行は、文字「c」で始まる必要があります。or
テーブルで大規模な削除を実行する前に、フィドルで実際にそれを試すことができれば最高です。
DELETE FROM demo WHERE `id`
in ('s23_1359182369', 's23_1359187062',
's23_1359192556',
's23_1358938356', 's6_1358663190')
OR `id` like 'c%';
すべての行を削除する必要があります。ただし、上記のリストにあるか、文字「c」で始まる場合を除きます。ここでORを使用すると、リストにないIDもcで始まる可能性があるため、OPのクエリはすべての行を削除します。cで始まらないIDもリストに含めることができます。その場合は、ANDを使用する必要があります。
DELETE FROM demo WHERE `id`
NOT in ('s23_1359182369', 's23_1359187062',
's23_1359192556',
's23_1358938356', 's6_1358663190')
AND `id` NOT like 'c%';
より良いアイデアを得るために、私は単純なデータポイントを使用しました。
テーブル:
| NUM | ID |
------------
| 1 | s1 |
| 2 | s2 |
| 3 | s3 |
| 4 | c1 |
| 5 | g1 |
| 6 | f1 |
| 7 | c3 |
| 8 | c2 |
| 9 | j1 |
| 10 | t1 |
クエリの削除:
DELETE FROM demo2 WHERE `id`
not in ('s1', 's2', 's3')
AND `id` not like 'c%';
クエリ後の結果:
| NUM | ID |
------------
| 1 | s1 |
| 2 | s2 |
| 3 | s3 |
| 4 | c1 |
| 7 | c3 |
| 8 | c2 |