我不明白为什么我在编译时收到错误消息Ambiguous column name'FirstName'

时间:2017-10-01 22:19:05

标签: sql sql-server select join sql-server-2012

SELECT FirstName
FROM Adjuncts 
INNER JOIN Faculty ON Adjuncts.FirstName = Faculty.FirstName  

这是我的Microsoft SQL Server 2012代码。我正在尝试将两个表连接在一起(AdjunctsFaculty)并分享他们的FirstNameLastName列。我试着做一个(FirstName),看看我是否可以使它工作,但不能。我收到以下错误消息:

  

Msg 209,Level 16,State 1,Line 1
  不明确的列名'FirstName'

有人能告诉我如何正确地将两张桌子连在一起吗?以及如何仅显示'FirstName'和& 'LastName'列在每个表 WITHOUT 中定义,与'FirstName'和& 'LastName'列并让它们两次。

3 个答案:

答案 0 :(得分:3)

两个表中都有FirstName - 正如ON子句清楚显示的那样。

我建议您使用表别名作为限定列名:

SELECT a.FirstName
FROM Adjuncts a INNER JOIN
     Faculty f
     ON a.FirstName = f.FirstName;

答案 1 :(得分:2)

您的查询中的两个表格(AdjunctsFaculty)都有FirstName列,因此您必须完全符合条件。 E.g:

SELECT     Adjuncts.FirstName
-- Here ---^
FROM       Adjuncts
INNER JOIN Faculty ON Adjuncts.FirstName = Faculty.FirstName  

答案 2 :(得分:0)

尝试使用以下查询,这可能会匹配,因此会显示数据。如果您未在ON的{​​{1}}子句中使用关键列,那么很难匹配

JOIN

另外,如果您不想为firstname设置两个不同的列,请不要在SELECT a.firstname FROM adjuncts a JOIN faculty f ON UPPER(a.firstname) = UPPER(f.firstname) 子句中添加f.firstname。