Mysql 同一列上的两个where条件
如何在MySQL中实现这个查询Mysql 同一列上的两个where条件,mysql,sql,where-clause,Mysql,Sql,Where Clause,如何在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”开头 我认为你的条件颠倒了——你在指定你想要保留的条件 试试这个 从设计
DELETE FROM design_adv WHERE `id`
NOT in ('s23_1359182369', 's23_1359187062', 's23_1359192556',
's23_1358938356', 's6_1358663190')
AND `id` NOT like 'c%';
我需要删除所有行,除非它们在上面给出的列表中或以字母“c”开头 我认为你的条件颠倒了——你在指定你想要保留的条件 试试这个 从设计adv中删除,其中
id
in('s23\U 1359182369','s23\U 1359187062','s23\U 1359192556','s23\U 1358938356','s6\U 1358663190')
或者
id
像'c%'不知道你真正想做什么。但是根据您的查询,该表将删除in
子句中的每个ID accept,以及中的通配符
like
运算符。任何ID都以c
开头。尝试此操作以保留除中的和中类似的之外的所有内容
您的问题已经说明了正确的查询:
我需要删除
以上列表中或
其他以字母“c”开头的所有行
在表中执行大规模删除之前,最好能在小提琴上尝试一下
DELETE FROM demo WHERE `id`
in ('s23_1359182369', 's23_1359187062',
's23_1359192556',
's23_1358938356', 's6_1358663190')
OR `id` like 'c%';
- OP更新了问题:
我需要删除所有行*,除非它们在上面给出的列表中*或以字母“c”开头。如果我们在这里使用或,OP的查询将删除所有行,因为任何不在列表中的ID也可以以c开头。任何不以c开头的ID也可以在列表中。。在这种情况下,您需要使用和
为了让您更好地了解,我使用了简单的数据点:
表:
| 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 |
看来你的问题是正确的。也许你对它的运作方式感到困惑。请看一下答案中的更新。我还添加了另一个示例,让您更好地了解查询中的行为和,或。
| NUM | ID |
------------
| 1 | s1 |
| 2 | s2 |
| 3 | s3 |
| 4 | c1 |
| 7 | c3 |
| 8 | c2 |