1

このクエリを MySQL に実装するにはどうすればよいですか?

DELETE FROM design_adv  WHERE `id` 
NOT in ('s23_1359182369', 's23_1359187062', 's23_1359192556',
          's23_1358938356', 's6_1358663190') 
AND `id` NOT like 'c%';

上記のリストに含まれていないか、文字「c」で始まっていない限り、すべての行を削除する必要があります。

4

2 に答える 2

0

あなたが本当に何をしようとしているのかわからない。inしかし、クエリによると、テーブルは、句とwildcardinlike演算子で受け入れられるすべてのIDを削除します。IDは.で始まりますcINこれを試して、 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%';

  • OPが質問を更新したとき:

すべての行を削除する必要があります。ただし上記のリストにあるか文字「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 |
于 2013-01-26T13:45:38.090 に答える
0

条件が逆になったと思います-保持したい条件を指定しています。

これを試して。

DELETE FROM design_adv WHERE idin ('s23_1359182369', 's23_1359187062', 's23_1359192556', 's23_1358938356', 's6_1358663190') OR idlike 'c%'

于 2013-01-26T12:51:36.887 に答える