mysql多表删除
来源:互联网 发布:部落冲突女巫升级数据 编辑:程序博客网 时间:2024/06/03 13:59
这几天在看mysql的中文版手册,发现DELETE还可以多表删除数据,但是目前在项目中还没有遇到过有人这样写的。在此记录一下,以免以后遇到怀有疑问。
先用以下sql构造测试的数据库数据:
表很简单,一目了然,不做解释。
以上根据这两个表列举多表删除的语法的例子,场景不太合适,只是用来理解。
CREATE TABLE `grade` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(8) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;INSERT INTO `grade` VALUES (1, '一年级');INSERT INTO `grade` VALUES (2, '二年级');INSERT INTO `grade` VALUES (3, '三年级');CREATE TABLE `student` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `grade_id` bigint(20) NOT NULL COMMENT '年纪id', `name` varchar(8) DEFAULT NULL, `sex` tinyint(2) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;INSERT INTO `student` VALUES (1, 1, '张三', 1);INSERT INTO `student` VALUES (2, 2, '李四', 2)
表很简单,一目了然,不做解释。
1. 从student表中把那些grade_id值在grade表里有匹配的记录全删除掉,即删除所有年级的学生。
DELETE student FROM student, grade WHERE student.grade_id=grade.id;
以上sql等价于:
DELETE FROM student USING student, grade WHERE student.grade_id=grade.id;
当然也可以指定grade_id:
DELETE FROM student USING student, grade WHERE student.grade_id=grade.id AND grade_id = 1;
2.删除所有没有年级的学生。
DELETE student FROM student LEFT JOIN grade ON student.grade_id = grade.id WHERE grade.id IS NULL;
或者
DELETE FROM student USING student LEFT JOIN grade ON student.grade_id = grade.id WHERE grade.id IS NULL;
3.删除三年级和所有三年级的学生。
DELETE grade,student FROM grade LEFT JOIN student ON grade.id = student.grade_id WHERE grade.id=3;
可以理解成从查询的结果中删除:
SELECT * FROM grade LEFT JOIN student ON grade.id = student.grade_id WHERE grade.id=3;
以上根据这两个表列举多表删除的语法的例子,场景不太合适,只是用来理解。
阅读全文
0 0
- mysql 多表删除
- mysql 多表删除
- mysql 多表删除
- mysql:多表删除
- mysql 多表删除
- MySQL多表删除
- mysql多表删除
- mysql 删除多表数据
- MySql 多表数据删除
- mysql 多表级联删除
- Mysql 多表删除语法
- mysql 多表关联删除
- mysql多表级联删除
- mysql--删除多表数据
- mySQL多表联合删除
- mysql一条语句删除多表(多表删除)
- MYSQL中delete删除多表数据
- MYSQL中delete删除多表数据
- 欢迎使用CSDN-markdown编辑器
- tomcat相关问题
- python的标准库
- 剑指offer 合并2个排序的链表
- Intellij 创建JavaWeb与实现Servlet(创建Servlet模板)
- mysql多表删除
- python3爬虫学习(一)
- Java递归算法要点
- '(' 与 ')'匹配问题
- 绝对路径和相对路径
- Mybatis一级缓存原理
- 初学python:辗转相除法求两个数的最大公约数和最小公倍数
- How to see JavaDoc in IntelliJ IDEA?
- [安卓]Android Studio 3.0 安装 后的 正常的设置的反应(2017.10)