[英]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.