MySQL多表连接删除问题相关
2016-01-26 15:17
603 查看
转载自:http://blog.sina.com.cn/s/blog_4c197d420101aeqr.html
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 如果使用了别名的方式,那么上下一致都用别名。
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 如果使用了别名的方式,那么上下一致都用别名。
相关文章推荐
- mysql limit
- 命令行操作MySQL的一些简单命令
- mysql的grant命令
- etl循环跑数据(mysql)
- MySQL中优化常用的查询sql语
- MySQL中优化常用的查询sql语
- mysql join on 联表
- Mysql手动安装
- MySQL DBA 成长之路
- 如何在MySQL客户端Navicat 上创建存储过程返回结果集
- mysql创建存储过程(根据时间字段来更新数据)
- Mysql新建用户和数据库授权
- MySql LeftJoin On 与 Where的差异
- mysql创建用户、授权[转]
- MySQL分区技术 (一)
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
- MySQL:MySQL日期数据类型、MySQL时间类型使用总结
- MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
- mysql随机从一个表中获取一条记录