SQL:指定列名称引用的表

时间:2016-06-01 17:47:05

标签: sql sql-server

我在一个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的当前值。目前,它认为它指的是它自己总是回归真实。

3 个答案:

答案 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

More info

答案 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)

我建议你为表格使用别名,使其非常清晰。