MySQL多表连接删除有关问题

MySQL多表连接删除问题

DELETE是一个蛮慎重的SQL操作,一般来说这样删除操作都需要谨慎小心,以免造成不必要的损失。

DELETE有下面这几种情况

Ø  delete from t1 where 条件

Ø  delete t1 from t1 where 条件

Ø  delete t1 from t1,t2 where 条件

Ø  delete t1,t2 from t1,t2 where 条件

简单地说就是delete语句是无法进行多表删除数据操作,不过可以通过建立级联删除,在两个表之间建立级联删除关系,来实现删除一个表的数据时,同时删除另一个表中相关的数据。

举例说明:

1)       从数据表MV中把那些id值在数据表Track里有匹配的记录全删除

DELETE MV

FROM MV,Track

WHERE Track.trkid=MV.mvid

等同于

DELETE FROM MV

USING MV,Track

WHERE Track.trkid=MV.mvid

2)       从数据表MV里在数据表Track里没有匹配的记录查找出来并删除掉

DELETE MV

FROM MV

LEFT JOIN Track

ON MV.mvid=Track.trkid

WHERE Track.trkid IS NULL

等同于

DELETE FROM MV

USING MV

LEFT JOIN Track

ON MV.mvid=Track.trkid

WHERE Track.trkid IS NULL

3)       从两个表中找出相同记录的数据并把两个表中的数据都删除掉

DELETE MV,Track

FROM MV

LEFT JOIN Track

ON MV.mvid=Track.trkid

WHERE MV.mvid=1

用别名的方式:

DELETE t1,t2

FROM MV t1

LEFT JOIN Track t2

ON t1.mvid=t2.trkid

WHERE t1.mvid=2

※ 以下两种情况会报错:

delete MV,Track

from MV as t1

left join Track as t2

on t1.mvid=t2.trkid

where t1.mvid=5

***********************

DELETE t1,t2

FROM MV t1

LEFT JOIN Track t2

ON t1.mvid=t2.trkid

WHERE MV.mvid=2

so 如果使用了别名的方式,那么上下一致都用别名。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。