如果内部和外部查询的FROM子句中的表中有共同的属性?

问题描述 投票:0回答:1

表A的模式:表B的A(x,y,z)模式:B(u,x,v)

[以粗体显示的主键]

对于提到的SQL查询: -

SELECT x
FROM   A
WHERE x in ( SELECT x 
           FROM B
           WHERE x<10)

内部查询如何解析这个x提到的是来自表B而不是表A?

sql database
1个回答
1
投票

x从最里面的查询中解析出来。限定列名称总是更好,因此请将此查询写为:

SELECT A.x
FROM A
WHERE A.x IN (SELECT B.x 
              FROM B
              WHERE B.x < 10
             );

这样做的好处是,如果B.x不存在,您将收到错误。否则,IN (SELECT x . . .将引用A.x(但仅当B.x不存在时)。

© www.soinside.com 2019 - 2024. All rights reserved.