有这样两张表,table2 中的 rid 关联 table1中的 id,t1 和 t2 是一对多的关系,没有做FK约束。本意是想执行delete table2 where rid in (select id from table1 where name='老大');
但在实际写的时候写成了。delete table2 where rid in (select rid from table1 where name='老大');
整句删除操作SQL按我理解来说,是有错误的,table1中没有rid这个字段,要么不能执行报错,要么是删除0行。
但意想不到的是,是删除了table2中的所有数据,不理解....拿出来讨论讨论
但在实际写的时候写成了。delete table2 where rid in (select rid from table1 where name='老大');
整句删除操作SQL按我理解来说,是有错误的,table1中没有rid这个字段,要么不能执行报错,要么是删除0行。
但意想不到的是,是删除了table2中的所有数据,不理解....拿出来讨论讨论
解决方案 »
- 在linux下安装oracle11g时,dbca出错
- sqlloader导入数据文件时,如何将两列数据组合存入一个字段中?
- 关于sqldeveloper 连接oracle出现ora12505的奇怪问题
- 求教关于分组合并的SQL语句
- 关于ORACORE9.DLL的疑问
- 用SQL语句怎样实现这种效果?
- 如果我刚刚delete了一张表,想把数据找回来,有没有办法呢?
- ORA-01006: 赋值变量不存在 是怎么一回事啊?
- 怎样在JDBC中调用Oracle的一个存储过程,并且此存储过程返回一个结果集,放在ResultSet中?
- oracle游标for循环嵌套for循环怎么优化呀?
- oracle增量备份
- 推荐个oracle快速创建索引的工具
delete table2 where rid =rid 是一样的
等于
delete table2 where rid in (select table2.rid from table1 where name='老大');
所以不报错。
而且在子查询中没有指定table1和table2的关联,所以子查询会返回table2.rid的全部记录,所以就删除了全部数据。