繁体   English   中英

为什么此DELETE查询无法工作?

[英]Why won't this DELETE query work?

我不知道为什么这个查询不起作用。 我做了一个SELECT来验证它是否在提取我想要的行。 我输入了DELETE,但现在不起作用。

这是我的SELECT查询:

SELECT dh.dragon_list_id, dh.habitat_list_id 
FROM dragon_to_habitat dh, dragon_list dl
  WHERE dh.dragon_list_id = dl.dragon_list_id
    AND dl.user_id = 1
    AND dl.is_deleted = false

我确定这是我忽略的愚蠢行为。 几乎没有帮助,不胜感激。

DELETE FROM dragon_to_habitat dh
  WHERE dh.dragon_list_id = dragon_list.dragon_list_id
    AND dragon_list.user_id = 1
    AND dragon_list.is_deleted = false

我还尝试了使用不起作用的JOIN进行此查询:

DELETE 
FROM dragon_to_habitat as dh JOIN 
     dragon_list as dl ON dh.dragon_list_id = dl.dragon_list_id
WHERE dl.user_id = 1 AND dl.is_deleted = false

错误:#1064-您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的'as dh JOIN dragon_list as dl ON dh.dragon_list_id = dl.dragon_list_id WH'附近使用

我只想清除dragon_to_habitat表中的值。 dragon_list表应保持不变。

为了达到良好的效果,这是我的架构: http : //sqlfiddle.com/#!2/7ac6a1

您需要JOIN dragon_to_habitatdragon_list表-

DELETE FROM dragon_to_habitat AS dh
JOIN dragon_list AS dragon_list ON dh.dragon_list_id = dragon_list.dragon_list_id
WHERE dragon_list.user_id = 1 AND dragon_list.is_deleted = false

尝试使用JOIN

DELETE 
FROM dragon_to_habitat as dh JOIN 
     dragon_list as dl ON dh.dragon_list_id = dl.id
WHERE dl.user_id = 1 AND dl.is_deleted = false
DELETE FROM 
 dragon_to_habitat 
USING 
  dragon_to_habitat dh 
INNER JOIN 
  dragon_list dl 
ON 
  dh.dragon_list_id = dl.dragon_list_id 
AND 
  dl.user_id = 1 
AND 
  dl.is_deleted = false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM