文档章节

delete表1条件是另一个表中的数据,多表连接删除

mickelfeng
 mickelfeng
发布于 2017/06/03 14:24
字数 509
阅读 24
收藏 0

数据库中有两张表。

DELETE cdb_posts,cdb_threads FROM cdb_posts ,cdb_threads where  cdb_threads.displayorder=-1 and cdb_posts.tid=cdb_threads.tid 

 DELETE  FROM cdb_posts  where tid in ( select tid from cdb_threads where  cdb_threads.displayorder=-1);

 delete from cdb_threads where  cdb_threads.displayorder=-1

DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释:

1、 delete from t1 where 条件

2、delete t1 from t1 where 条件

3、 delete t1 from t1,t2 where 条件

4、delete t1,t2 from t1,t2 where 条件

前 3者是可行的,第4者不可行。

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

1、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除 掉

DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id

2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉

DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL

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

DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25

注意此处的delete t1,t2 from 中的t1,t2不能是别名

如:delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)

上述语句改 写成
 

delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MySQL 版本小于5.0在5.0中是可以的)

© 著作权归作者所有

共有 人打赏支持
mickelfeng

mickelfeng

粉丝 227
博文 2635
码字总数 568692
作品 0
成都
高级程序员
MySQL(十二)DML数据的增删改

一、DML语言 数据操作语言: 插入:insert 修改:update 删除:delete 二、插入语句insert 2.1、方式一 语法:insert into 表名(字段名,...) values(值,...); 特点: 1、要求值的类型和字段的...

leeqico
05/29
0
0
Sqlite之外键约束跟内外联表

SQLite SQLite是一种嵌入式数据库,小型高效,值得移动开发者去学习利用 当然性能要去不高可以使用apple的coreData面向对象操作关系型数据库技术 —— 百度百科 首先我会建两个表1.tperson2.tb...

MrBryant24
2014/04/23
0
1
Mysql数据库基本操作

一、MySql数据库表操作 1、操作数据库 创建数据库:create database 数据库名; 删除数据库:drop database 数据库名; 修改数据库编码格式:alter database 数据库名 character set 要修改的字...

走了丶
2017/10/20
0
0
MySQL/MariaDB基础及简单SQL语句

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。 在Linux操作系统内核中提供了MySQL或MariaDB的rpm包,CentOS6...

sherlockR
07/25
0
0
第一部分 数据库之SQL语句

注:1.mysql是一种关系型数据库 2.大小写不敏感 3.字符串用单引号,若字符串里有单引号,则可以用两个单引号表示一个单引号 ‘assad’’a‘表示 assad'a 一、数据库概述 数据:数据库中存储的...

孙浩j
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
58
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
50
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
54
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
59
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
54
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部