表A的模式:A( x ,y,z) 表B的模式:B( u ,x,v)
[以粗体显示的主键]
对于上面提到的SQL查询: -
SELECT x
FROM A
WHERE x in ( SELECT x
FROM B
WHERE x<10)
内部查询如何解析这个x提到的是来自表B而不是表A?
答案 0 :(得分: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
不存在时)。