加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 删除语句 – 子查询应该抛出错误

发布时间:2020-12-12 06:29:38 所属栏目:MsSql教程 来源:网络整理
导读:我创建了两个表,T1和T2,每个表分别有一列,abc和xyz.我在每个表中插入了2行(数值1和2). 当我运行命令“从t2选择abc”时,它会抛出一个错误,表示表T2中不存在列abc.但是,当我运行命令“从t1删除abc in(SELECT abc from t2);”时,删除2行. 不应该删除失败,因为我
我创建了两个表,T1和T2,每个表分别有一列,abc和xyz.我在每个表中插入了2行(数值1和2).

当我运行命令“从t2选择abc”时,它会抛出一个错误,表示表T2中不存在列abc.但是,当我运行命令“从t1删除abc in(SELECT abc from t2);”时,删除2行.

不应该删除失败,因为我使用了在子查询中失败的相同语句?

create table t1 (abc number); –Table created

create table t2 (xyz number); –Table created

insert into t1 values (1); –One row inserted

insert into t1 values (2); –One row inserted

insert into t2 values (1); –One row inserted

insert into t2 values (2); –One row inserted

SELECT abc from t2; –ORA-00904 -> Because column abc does not exist in t2

delete from t1 where abc in (SELECT abc from t2); –2 rows deleted

解决方法

如果您使用表名作为别名以确保选择了表t2列,您??将收到错误,即
delete from t1 where abc in (SELECT t2.abc from t2); --ORA-00904

您的原始查询没有失败,因为它使用表t1的abc列,因为表t1在子查询中可见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读