ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL之多表关联删除/更新

2022-05-06 20:04:52  阅读:184  来源: 互联网

标签:customer 删除 id MySQL 之多表 null where order DELETE


日常测试的时候,需要连接其他表而删除某些脏数据,按照正常的查询的写法,会这样写删除语句:

DELETE from `order` where id in (SELECT o.id from `order` o LEFT JOIN customer c on o.customer_id =c.id where o.customer_id is not null and c.id is null)

然后...... You can't specify target table 'order' for update in FROM clause

意思是:不能先select出同一表中的某些值,再update这个表,即不能依据某字段值做判断再来更新某字段的值。

好吧~~~

百度研究一番这么解决,可以多表连接进行删除,这里也疑惑了下,这个写法为啥看书、看视频的时候都不见介绍???

-- 删除order表的数据
DELETE o from `order` o LEFT JOIN customer c on o.customer_id =c.id where o.customer_id is not null and c.id is null

-- 删除customer表数据
DELETE c from `order` o LEFT JOIN customer c on o.customer_id =c.id where o.customer_id is not null and c.id is null

-- 同时删除order、customer表数据
DELETE o,c from `order` o LEFT JOIN customer c on o.customer_id =c.id where o.customer_id is not null and c.id is null

顺便也研究了下多表更新:

UPDATE wx_customer wc LEFT JOIN `order` o ON wc.id=o.wx_customer_id SET o.wx_customer_id = NULL,wc.customer_id = NULL,wc.relate_wx_id=NULL where wc.id = "937680";

这里提一嘴:多表连接的更新,可以同时更新两个表~

百度学习的时候,也有些大佬使用别名。。。。这个写法日自己不怎么使用,这里就不贴上来了

总结规矩(不然有点不好记~):

不管是SELECT、DELETE 还是 UPDATE语句,都是在表这里进行多表关联操作,关联。

标签:customer,删除,id,MySQL,之多表,null,where,order,DELETE
来源: https://www.cnblogs.com/testfeel/p/16230179.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有