无法在 mysql 删除查询上加入工作

Posted

技术标签:

【中文标题】无法在 mysql 删除查询上加入工作【英文标题】:Can't get join on mysql delete query to work 【发布时间】:2011-01-20 05:10:13 【问题描述】:

我知道有不止一个问题与此匹配,但我对 mysql 比较陌生,我似乎无法使用子任务或 USING 关键字来完成这项工作,而且我在 mysql 上找到了行文档完全是个谜。

我开始尝试使用 SELECT 查询作为基础来构建我的 DELETE 查询,并且能够获取我想要删除的所有行:

select *
from writings_tags_link
join writing_tags on writing_tags.id = writings_tags_link.tag_id
where writing_tags.tag = 'tag one'

然后将 select all 替换为 DELETE 所以:

delete
from writings_tags_link
join writing_tags on writing_tags.id = writings_tags_link.tag_id
where writing_tags.tag = 'tag one'

我从错误消息和其他类似帖子中收集到,您不能在删除查询中使用“ON”来连接表,您必须使用 USING 或子查询。我使用 USING 构建的查询返回一个非常奇怪的错误,首先是查询:

DELETE
FROM writings_tags_link
USING writing_tags_link INNER JOIN writing_tags  
WHERE writing_tags.id = writings_tags_link.tag_id 
AND writing_tags.tag ='tag one'

错误:

#1109 - Unknown table 'writings_tags_link' in MULTI DELETE

这个表确实存在,显然,我原来的选择查询返回了想要的结果。非常感谢任何帮助/解释!

请记住,我只是想删除链接表中的数据。

【问题讨论】:

【参考方案1】:

关于在使用 JOIN 时要求在 DELETE 语法中使用 USING 关键字的信息不正确 - documentation provides examples in the multi-delete section:

DELETE wtl
  FROM WRITINGS_TAGS_LINK wtl
  JOIN WRITING_TAGS wt ON wt.id = wtl.tag_id
 WHERE wt.tag = 'tag one'

【讨论】:

哦,我明白了,我没有添加要删除的内容!就像我说的,我正在学习 :) 谢谢,OMG 小马! 这也帮助了我的noobery :)

以上是关于无法在 mysql 删除查询上加入工作的主要内容,如果未能解决你的问题,请参考以下文章

当 Doctrine 查询已加入时,setMaxResults 无法正常工作

从宏查询(加入)外部工作簿

Mysql 查询加入

构造 2 - 在设备上加入无法正常工作

Bigquery 重复数据删除查询无法正常工作

我无法让我的 mySQL 删除命令工作