关于联合删除的SQL语句
这个语句并不复杂,也用过很多次,不过今天遇到了,死活想不起来,于是又推了一遍才得到答案
一个表结构如下
mysql> desc atm_user;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| name | varchar(15) | | MUL | | |
| tel | varchar(15) | | | NULL | |
+----------+-------------+------+-----+---------+----------------+
现在前端传过来一个数组,里面有若条记录,每条记录中都有两个值,一个是name, 一个是tel 现在要删除数据库里没有在数组里包含的记录
如:现在数据库中记录为
a ..... 1
b ..... 2
c ...... 2
a ....... 2
数组中传来的是 {a,1},{c,2}
那现在问题出现了,如何用一句SQL删除 {b,2}和{a,2}呢
其实where后面的逻辑很简单,只要不删除 name = a and tel =1 和 name=c and tel =2 的就可以了 。。。。
推导的过程这里不会打数学里的公式……没法写了。。。。。。。。
答案:
WHERE (name <> 'a' or tel <>1) and
(name <> 'c' or tel <> 2)
看来数学的与非公式真的很有用。。。。