Oracle 多表联合删除?--转
oracle和mysql多表删除数据的方法一大把,好多都是没经过证实的,你很可能已经被错误信息误导了,下面我以mysql两张表删除数据为例,来让给为注意到这一点,我在mysql中新建了两张表,分别是用户表和国家表,如下所示。
用户表users:

国家表country,如图:

当你看到这两张mysql表的时候,你一定认为多表数据删除的语句是这样的,其实这样是错误的!,如下。
delete from users u,country c where u.id = c.userId and u.id = 20
mysql多表删除用上面的语句会报sql syntax语法错误的,报错如下。
[SQL]
delete from users u,country c where u.id = c.userId and u.id = 20
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'u,country c where u.id = c.userId and u.id = 20' at line 1
mysql多表删除数据正确的方法应该使用内连接来删除,如下两条语句,可任选一句。
//语句一
delete u,c from users u INNER JOIN country c on u.id = c.userId and u.id = 20 //语句二
delete u,c from users u INNER JOIN country c where u.id = c.userId and u.id = 10
这个时候你一定会认为,oracle删除多表数据能否用上面这两条语句?答案是:不行!,它会报如下错误。
“ORA-00933:SQL命令未正确使用”
说明oracle使用上面的两条语句多表删除数据是不行的,那oracle多表删除数据该怎么写呢?命令如下。
//oracle中只能分开执行
delete from users where users.id = 20
delete from country where country.userId = 20
在oracle中不能进行多表关联删除,这可能跟oracle数据库的安全机制有关,你只能把上面的语句分成两条sql语句来执行才可以实现oracle的多表删除。
转自 :http://www.tpyyes.com/a/mysql_oracle/2017/1116/383.html
Oracle 多表联合删除?--转的更多相关文章
- oracle多表关联删除数据表记录方法
oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...
- Mybatis oracle多表联合查询分页数据重复的问题
Mybatis oracle多表联合查询分页数据重复的问题 多表联合查询分页获取数据时出现一个诡异的现象:数据总条数正确,但有些记录多了,有些记录却又少了甚至没了.针对这个问题找了好久,最后发现是由于 ...
- oracle多表关联删除的两种方法
oracle多表关联删除的两种方法 第一种使用exists方法 delete from tableA where exits ( select 1 from tableB Where tableA.i ...
- oracle 创建表,删除表,修改表,查询表
1,获取当前用户下的所有表信息 => SELECT * FROM user_tables 1.1,查询某一张表的字段信息:SELECT * FROM user_tab_columns w ...
- Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结
创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 字段类型 默认值 是否为空, ...... ); 创建一个us ...
- oracle 创建表、删除表、添加字段、删除字段、表备注、字段备注、修改表属性
1.创建表 create table 表名( classid number() primary key, 表字段 数据类型 是否允许为空(not null:不为空/null:允许空) 默认值(defa ...
- Oracle创建表、删除表、修改表、字段增删改 语句总结
创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 字段类型 默认值 是否为空, ...... ); 创建一个us ...
- mysql 多表联合更新
UPDATE mall_order moLEFT JOIN mall_order_goods mog ON mo.id = mog.order_idSET mo.ratio=0.08WHERE mog ...
- oracle系统表的查询
oracle查询用户下的所有表 select * from all_tab_comments -- 查询所有用户的表,视图等select * from user_tab_comments -- 查 ...
随机推荐
- AI新生代“教父”崛起,或成就迈向具有类人意识机器的一大步
<麻省理工科技评论>公布了 2018 年全球十大突破性技术,“对抗性神经网络”即“生成对抗网络”作为突破性人工智能技术赫然上榜.这家全球最顶级科技杂志编辑部对这项革命性技术给出的评价是:它 ...
- XMemcached的基本使用
XMemcached是memcached的一个java客户端,基于java nio,支持memcached的所有协议.本文简要介绍XMemcached的基本使用. 一.添加依赖 <depende ...
- mysql 1366错误
- 在使用pandas 0.23.4对日期进行分组排序时报错
date_df["rank_num"] = date_df.groupby("issuer_id").report_date.agg("rank&qu ...
- [转帖]Oracle报错ORA-26563--当重命名表时碰到物化视图
Oracle报错ORA-26563--当重命名表时碰到物化视图 https://www.toutiao.com/i6739137279115133447/ 原创 波波说运维 2019-09-26 00 ...
- Linux文件删除,但是df -hT之后磁盘空间没有释放
Linux 磁盘空间总是报警,查到到大文件,删除之后,df看到磁盘空间并没有释放. 查找了下发现系统对rm进行了alias ,因为Linux对删除操作没有回收站机制,对rm操作进行了自定义,对删除 ...
- 怎样获取当前对象的原型对象prototype
1. 使用 Object.getPrototypeOf(); function Person(name){ this.name = name; } var lilei = new Person(&qu ...
- hdu 2473 并差集的删除操作
虚拟数组 待定/.#include<iostream> #include<algorithm> #include<set> using namespace std; ...
- 【转载】springboot启动报错(Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWe)
SpringBoot启动时的异常信息如下: 1 "C:\Program Files\Java\jdk1.8.0_161\bin\java" ......... com.fangxi ...
- 手机如何修改host文件
常常在想本地开发的时候使用pc端测试移动端,由于有安全域名限制,因此在本地修改了机器的host.将域名映射到本地局域网.这个做法是很正常的也很常见.但是现在新的需求是我需要在手机上也能够正常测试啊!怎 ...