我运行以下查询,我得到了模棱两可的错误。为什么会这样?
select *
from dbo.tableA as table1, dbo.tableZ as table2
where (columnB = dbo.tableZ.columnB)
不明确的列名columnB
tableA还有一个名为columnB的列。
答案 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查询不会解析,但它只是一个例子。