gpt4 book ai didi

sql - 这是 SQL Server 2008 中的错误吗?

转载 作者:行者123 更新时间:2023-12-03 05:47:10 24 4
gpt4 key购买 nike

create table Mytable1
(ID int,
Fname varchar(50)
)

create table Mytable2
(ID int,
Lname varchar(50)
)

insert into Mytable1 (ID,Fname)
values (1,'you')
insert into Mytable1 (ID,Fname)
values (2,'Tou')
insert into Mytable1 (ID,Fname)
values (3,'Nou')

insert into Mytable2 (ID,Lname)
values (1,'you2')

Mytable2中不存在字段Fname,但我们有以下查询的结果:

select * from Mytable1 where Fname in (select Fname from Mytable2)

注意:我使用sql server 2008,结果是表Mytable1的所有行

这是 SQL 中的错误吗?

最佳答案

不,这不是错误。

如果将表别名添加到整个查询中使用的字段,您可以更清楚地看到发生的情况:

select * from Mytable1 mt1 
where mt1.Fname in (select mt1.Fname from Mytable2 mt2)

- 即。子查询引用(并返回)主查询中的值。

如果将查询更改为:

select * from Mytable1 mt1 
where mt1.Fname in (select mt2.Fname from Mytable2 mt2)

-您收到错误。

(SQLFiddle here)

关于sql - 这是 SQL Server 2008 中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15897450/

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