MySQL使用记录
2021/11/23 2:12:57
本文主要是介绍MySQL使用记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近换了个新环境,用的自己完全陌生的技术栈,angular,还是版本比较老的,JS很多原生的方法都用不成;
这两天给了个任务,让我把平台上一些存量数据处理掉,需要完成流程图节点、上传文件;
在做的时候发现有些地方还是值得记录一下的;
比如,前期测试的时候,流程没走下去,后端也执行了insert插入语句,导致生成很多条记录;
沿着调用的接口,在前端、后端代码打断点,发现数据来源于表illegal_disposal;
后来请教了后端同学得知BUILDING_ILLEGAL_ID不会有重复的,只有一个;
比如我某条信息生成4个记录,F12查看接口返回的数据,有个id刚好与BUILDING_ILLEGAL_ID值一致;
于是自己打算利用之前学过的.net做个小程序去删除重复数据;
用.net 5.0、NLog、MySQLHelper.cs搭了个控制台程序框架;
在拼sql语句时,突然想起来或许一句sql代码就可以实现想要的功能;
最后拼出来两条sql语句
-- 查看数据重复的数据,及重复多少次 select BUILDING_ILLEGAL_ID,count(*) as count from illegal_disposal group by BUILDING_ILLEGAL_ID having count>1;
-- 根据id进行删除,保留BUILDING_ILLEGAL_ID相同的最小的id; DELETE FROM illegal_disposal WHERE 1=1 AND `BUILDING_ILLEGAL_ID` in (SELECT * FROM ( (SELECT `BUILDING_ILLEGAL_ID` `BUILDING_ILLEGAL_IDS` FROM illegal_disposal GROUP BY BUILDING_ILLEGAL_ID HAVING COUNT(`BUILDING_ILLEGAL_ID`)>1) ) a) AND id not in (SELECT * FROM ( (SELECT MIN(id) ids FROM illegal_disposal GROUP BY BUILDING_ILLEGAL_ID HAVING COUNT(`BUILDING_ILLEGAL_ID`)>1) ) b)
在执行delete语句的时候发现删除失败,提示的有外键关联;
MySQL中设置了foreign key关联,造成无法更新或删除数据。我通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。
先禁用外键约束,可以使用:
SET FOREIGN_KEY_CHECKS=0;
然后再执行删除数据的语句
删除后,把关掉的外键约束启用起来,可以用:
SET FOREIGN_KEY_CHECKS=1;
最后可以通过这个命令查看当前FOREIGN_KEY_CHECKS的值:
SELECT @@FOREIGN_KEY_CHECKS;
确认是没问题的,OK了
这篇关于MySQL使用记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程