繁体   English   中英

从多个表中删除不起作用

[英]Delete from multiple tables is not working

场景:有4个表[A,B,C,D,E]。 我想在一个查询中将其全部删除。 我正在应用以下查询。

$con=mysqli_connect("localhost","root","","db")
$del="DELETE a,b,c,d,e FROM `A` as a INNER JOIN `B` as b INNER JOIN `C` as c  
INNER JOIN
 `D` as d INNER JOIN `E` as e ON a.user_id=b.user_id AND a.user_id=c.user_id     
AND a.user_id=d.user_id AND a.user_id=e.user_id 
WHERE login.user_id= '25'";
$que=mysqli_query($con,$del)
if($del){
echo "Its done";
}
else{
echo mysqli_error($con);}

当每个表中都有针对该ID的数据时,它可以删除。 但是,当某个表中没有数据时,在D和E中说一句,查询将不起作用,并且此后也不会删除任何内容。 我认为这是因为我已将AND运算符置于“ ON”之间。 我对sql不太了解。 所以,请有人帮我。 另外,它的打印完成没有任何错误。 希望这对您有意义。谢谢。

每个联接都有自己的ON子句

DELETE a,b,c,d,e 
FROM `A` as a 
INNER JOIN `B` as b ON a.user_id=b.user_id
LEFT JOIN `C` as c ON a.user_id=c.user_id  
INNER JOIN `D` as d ON a.user_id=d.user_id
LEFT JOIN `E` as e ON a.user_id=e.user_id    
WHERE a.user_id= '25'

尝试这个

$del="DELETE a,b,c,d,e 
    FROM `A` as a 
    LEFT OUTER JOIN `B` as b ON a.user_id=b.user_id
    LEFT OUTER JOIN `C` as c ON a.user_id=c.user_id
    LEFT OUTER JOIN `D` as d ON a.user_id=d.user_id
    LEFT OUTER JOIN `E` as e ON a.user_id=e.user_id
WHERE login.user_id= '25'";

暂无
暂无

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

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