
通过单一语句实现多表删除
问题:
如何通过一条 sql 语句删除三个表中与特定 id 相关的数据?
原始 sql:
delete dish, dish_flavor, setmeal_dishfrom dish, dish_flavor, setmeal_dish where dish.id = dish_flavor.id and dish.id = setmeal_dish.id and dish.id in (51, 52);
执行结果:
第三张表为空,前两张表中数据未删除。
表单大师AI
一款基于自然语言处理技术的智能在线表单创建工具,可以帮助用户快速、高效地生成各类专业表单。
74 查看详情
原因:
原始 sql 使用的是内连接,这意味着三张表中必须都有要删除的 id 才能进行删除。在第三张表中没有数据的情况下,条件不满足,因此未删除数据。
解决方案:
可以使用左连接,即使第三张表中没有数据,也能从前两张表中删除数据。修改后的 sql 如下:
DELETE dish,dish_flavor,setmeal_dish FROM dish LEFT JOIN dish_flavor ON dish.id = dish_flavor.id LEFT JOIN setmeal_dish ON dish.id = setmeal_dish.idWHERE dish.id IN ( 51, 52 );
以上就是一条SQL语句如何高效删除关联表中的特定数据?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/616758.html
微信扫一扫
支付宝扫一扫