文档章节

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

mickelfeng
 mickelfeng
发布于 2017/06/03 14:24
字数 509
阅读 27
收藏 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

粉丝 231
博文 2690
码字总数 572815
作品 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
第一部分 数据库之SQL语句

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

孙浩j
2017/11/29
0
0
MySQL/MariaDB基础及简单SQL语句

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

sherlockR
07/25
0
0
dml--数据操控语句

#插入语句 #INSERT INTO tablename (field1, filed2) VALUES(value1, value2); INSERT INTO EMP(, , ) VALUES('DY', '2015-12-25', '2000'); #多条插入 INSERT INTO EMP(, , ) VALUES('dd',......

xbuding
2016/04/26
42
0

没有更多内容

加载失败,请刷新页面

加载更多

iOS 官方文档

https://developer.apple.com/library/prerelease/content/navigation/#section=Platforms&topic=iOS...

walking_yxf
8分钟前
1
0
使用Mycat实现MySQL数据库的读写分离

前提准备 1.一台CentOS机器 2.Mycat安装包 (http://www.mycat.io/) 安装使用 1.解压Mycat的安装包到/user/local/下 2.设置mycat的环境变量 vi /etc/profile 3.使配置文件立即生效 source /...

吴伟祥
8分钟前
1
0
Aries数据库事务Recovery算法

背景知识 本文是一篇关于(分布式)数据库的文章,在开始阐述Aries是什么之前,需要先交代几个常识性的概念,这些概念对后文引出Aries显得尤为重要。 数据库体系结构 图1大致描述了一个(分布...

黑客画家
12分钟前
1
0
Rxjava Backpressure 32

原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part 4 - Concurrency/4. Backpressure.md Rx将事件从管道的一端引导到另一端,在每一端发生的行动可能非常不同。当生产者...

woshixin
12分钟前
1
0
IDEA-Create Git Repository

1、概述 idea 开发完毕的项目没有及时的关联gitlab,如果整体项目关联gitlab。 2、干 2.1 gitlab 创建项目 2.2 idea 1、IDEA 点击 -> VCS -> import into version control -> create git re......

来来来来来
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部