为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL/MariaDB DELETE 查询昨天工作正常,今天影响 0 行...查询不变

MySQL/MariaDB DELETE 查询昨天工作正常,今天影响 0 行...查询不变

芜湖不芜 2023-07-06 14:38:33
我正在运行 MariaDB 10.3.16 的本地主机 XAMPP 设置,并编写了以下查询,该查询根据第一个表的“ID”列从多个表中删除行。问题是,昨天还运行得很好,今天在相同的测试数据上根本不会产生任何影响。我在本例中重命名了表,但其他一切都相同。假设我们尝试删除当前存在的多个 ID 48、49 和 50:delete t1,t2,t3,t4,t5,t6,t7,t8 from table1 as t1join table2 as t2 on t2.account_id = t1.idjoin table3 as t3 on t3.account_id = t1.idjoin table4 as t4 on t4.account_id = t1.idjoin table5 as t5 on t5.account_id = t1.idjoin table6 as t6 on t6.account_id = t1.idjoin table7 as t7 on t7.account_id = t1.idjoin table8 as t8 on t8.account_id = t1.idwhere t1.id in (48,49,50);我现在有点抓狂,因为这个查询昨天多次运行良好,因为我在各个表中添加行来测试它。每次都有效。今天,我在项目的一个完全不相关的部分做了一些其他工作,然后回到使用 API 的 DELETE 端点 - 结果发现这个查询根本不会再删除任何东西。一切顺利,但现在影响 0 行。将查询直接复制并粘贴到 phpMyAdmin(它也曾经在其中工作)给出了相同的结果 - 0 行受到影响。我的查询有问题吗?你会以不同的方式写这个吗?是否有任何原因可以解释为什么相同的查询、在相同的环境中、使用相同的测试数据,有一天可以工作,而第二天就不行了?也许是一个小故障?
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我的查询的问题是,只有当所有表都包含我正在搜索的 account_ids 时,它才会删除任何内容。如果其中任何一个没有关联 ID 的数据,数据库就会停止,不会影响任何内容。

我又搜索了一下,发现将查询中的JOIN更改为LEFT JOIN允许在找到 id 的所有表中完成该操作,跳过那些没有 id 的表。是时候阅读更多有关 SQL 的内容了!


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信