关于联合删除的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 的就可以了  。。。。

 

推导的过程这里不会打数学里的公式……没法写了。。。。。。。。

 

答案:

 

DELETE from atm_user
WHERE (name <> 'a' or tel <>1and
             (name <>
 'c' or tel <> 2)

 

看来数学的与非公式真的很有用。。。。

 

 

 

 

 

posted @ 2009-03-11 19:48  玉米疯收  阅读(2464)  评论(3编辑  收藏  举报