关于联合删除的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 @   玉米疯收  阅读(2467)  评论(3编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
历史上的今天:
2008-03-11 SuseLinux VNC配置(转)
2008-03-11 诚觅兼职linux服务器配置顾问
点击右上角即可分享
微信分享提示