疑难解答 - 不明确的列名xyz

时间:2013-04-10 08:25:46

标签: sql sql-server sql-server-2008

我运行以下查询,我得到了模棱两可的错误。为什么会这样?

select * 
from dbo.tableA as table1, dbo.tableZ as table2
where (columnB = dbo.tableZ.columnB)
  

不明确的列名columnB

tableA还有一个名为columnB的列。

2 个答案:

答案 0 :(得分:3)

两个表都有一个columnB但您的条件的第一部分没有指定使用哪个表columnB

将其更改为:

select * 
from dbo.tableA as table1, dbo.tableZ as table2
where (table1.columnB = table2.columnB)

答案 1 :(得分:2)

您需要使用字段名称的别名。在创建连接时使用别名引用字段是一个很好的规则,这样其他人就可以更容易地读取SQL ...

e.g。

SELECT  t1.ColA ,
        t1.ColB ,
        t2.ColA
FROM    Table1 AS t1
        INNER JOIN Table2 AS t2 ON t1.Id = t2.FId

而不是......

SELECT  ColA ,
        ColB ,
        ColA
FROM    Table1 AS t1
        INNER JOIN Table2 AS t2 ON t1.Id = t2.FId

我知道第二个SQL查询不会解析,但它只是一个例子。