我在一个SQL查询中选择同一个表中的数据,并且需要指定我正在使用的特定列引用哪个表。
基本上:x是不明确的,我需要使它不含糊。
例如我有......
SELECT DISTINCT x,
(SELECT x FROM Y WHERE x=x)
FROM Y ^ ^
| |
| |_ [x referring to outer select statement]
[x referring to inner] _|
[ select statement ]
我需要以某种方式指定 x右侧手侧是指外部选择语句中的x的当前值。目前,它认为它指的是它自己总是回归真实。
答案 0 :(得分:5)
你应该使用表别名:
SELECT DISTINCT h.x,
(SELECT x FROM Y as g WHERE g.x=h.x)
FROM Y as h
通过这种方式,您可以创建临时表名并指向它们,尤其适用于自联接
我们可以在Sql server中使用或不使用“AS”:
table_name AS table alias
table_name table_alias
答案 1 :(得分:2)
只需使用:
SELECT DISTINCT yOut.x,
(SELECT yIN.x FROM Y as yIN WHERE yIN.x=yOut.x) as someColName
FROM Y as yOut ^ ^
| |
| |_ [x referring to outer select statement]
[is your table alias ] ______________|
[from inner select]
答案 2 :(得分:0)
我建议你为表格使用别名,使其非常清晰。