带有AS别名的不明确列参考

时间:2012-10-21 23:54:06

标签: sql postgresql alias ambiguous

我不确定在使用别名时如何解决模糊列引用。

想象一下,两个表ab都有一个name列。如果我连接这两个表并为结果添加别名,我不知道如何为两个表引用name列。我尝试了一些变体,但它们都不起作用:

尝试1

SELECT a.name, b.name
FROM (a INNER JOIN b ON a.id = b.id) AS x

这不起作用ab超出范围。

尝试2

SELECT x.a.name, x.b.name
FROM (a INNER JOIN b ON a.id = b.id) AS x

SQL语法不能像那样工作。

尝试3

SELECT x.name, x.name
FROM (a INNER JOIN b ON a.id = b.id) AS x

这很简单!

我完全没有想法 - 任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:10)

不要用括号括起来,因为(a INNER JOIN b ON a.id = b.id)不是完整的查询。

SELECT  a.name AS A_Name, 
        b.name AS B_Name
FROM    a INNER JOIN b 
           ON a.id = b.id

或(假设)如果您有更长的表名,并且想要缩短它,

SELECT  a.name AS A_Name, 
        b.name AS B_Name
FROM    longTableNameA a 
        INNER JOIN longTableNameB b 
           ON a.id = b.id