gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:21:48 24 4
gpt4 key购买 nike

我创建了两个表,T1 和 T2,每个表一列,分别是 abc 和 xyz。我在每个表中插入了 2 行(数值 1 和 2)。
当我运行命令时 "select abc from t2" ,它会抛出一个错误,指出表 T2 中不存在列 abc。但是,当我运行命令时 "delete from t1 where 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 

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

关于sql - 删除语句 - 子查询应该抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com