You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写仅删除关联表tbl1指定记录的SQL DELETE语句

正确的JOIN式DELETE语句(仅删除tbl1数据)

你的问题核心是没有明确指定要删除的目标表——当你写DELETE FROM tbl1 INNER JOIN...时,数据库无法判断你要删除关联中的哪张表数据,所以才会出现误删或报错的情况。只需要在DELETE关键字后明确标记要删除的表(原表名或别名均可),就能精准操作tbl1的数据。

以下是两种清晰可靠的写法:

写法一:直接使用原表名

DELETE tbl1
FROM tbl1
INNER JOIN tbl2 ON tbl2.terms_id = tbl1.terms_id
WHERE tbl2.taxonomy = 'category' AND tbl1.post_id = 4001

写法二:使用别名(更适合复杂查询,可读性更强)

DELETE t1
FROM tbl1 t1
INNER JOIN tbl2 t2 ON t2.terms_id = t1.terms_id
WHERE t2.taxonomy = 'category' AND t1.post_id = 4001

效果验证

结合你给出的测试数据:

  • tbl1中post_id=4001的行对应terms_id为2、1、3
  • 关联tbl2后,只有terms_id=1的taxonomy值是category
  • 执行语句后,只会删除tbl1中ID=2的那条记录,tbl2的数据完全不受影响

内容的提问来源于stack exchange,提问作者sajib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:58:31