我删除的查询应该删除所有与01或10不匹配的记录。这两个数字位于以短划线分隔的单词前面。看起来像这样:
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%'
由于某种原因,上面的查询会删除上面列表中的所有记录。我不确定在哪里遗漏了删除所有记录的内容。如果有人看到问题,请告诉我。谢谢。
答案 0 :(得分:6)
将您的OR更改为AND
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')
(稍微可读但不会使用索引)
答案 1 :(得分: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%');
这样可以很容易地检查您要删除的记录。