2016-12-12 14 views
0

01または10と一致しないすべてのレコードを削除する削除クエリがあります。これらの2つの数字は、ダッシュで区切られた単語の前にあります。これは次のようになります。%delete recordsのようなSQL?

Column_1 
01-Test1 
01-Test2 
10-Test3 
10-Test4 

単語の前に01と10に一致しないすべてのレコードを削除する必要があります。ここに私のクエリです:

DELETE FROM MyRecords 
WHERE Column_1 NOT LIKE '01%' OR Column_1 NOT LIKE '10%' 

何らかの理由で上記のリストからすべてのレコードが削除されます。私はどこですべてのレコードを削除する何かを逃したか分からない。誰かが問題を見たら私に知らせてください。ありがとうございました。

答えて

5
あなたORし、

DELETE FROM MyRecords 
WHERE Column_1 NOT LIKE '01%' AND Column_1 NOT LIKE '10%' 

別のオプション

DELETE FROM MyRecords 
WHERE Left(Column_1,2) NOT IN ('01','10') 

(もう少し読みやすいが、インデックスを使用しません)を変更し

0

まず、あなたが維持したいレコードを識別('01% '& '10%')、

Select * MyRecords WHERE (Column_1 LIKE '01%' OR Column_1 LIKE '10%'); 

次に条件の前にNOTを置き、それを削除に変更します。

DELETE FROM MyRecords WHERE NOT (Column_1 LIKE '01%' OR Column_1 LIKE '10%'); 

これにより、削除するレコードを確認するのが非常に簡単になります。

+0

あなたのコードがOPの問題を解決する理由について説明することができればうれしいです。レビュー専用キューではコードのみの回答を削除できます。ありがとう! –