【问题标题】:How to join duplicate column name in joins in SQL Server?如何在 SQL Server 的连接中加入重复的列名?
【发布时间】:2016-10-02 04:03:54
【问题描述】:

我有两张桌子,一张是Employee,另一张是Dept

Employee 表包含 IDNameDeptId 列,Dept 表包含 IDDeptName 列。

现在如果写一个查询:

Select 
    ID, Name, ID, DeptName
from 
    Employee
Inner Join 
    Dept On Employee.DeptID = Dept.ID

我收到一个错误,因为它不知道我的意思是哪个 ID 列。如何唯一定义列?

【问题讨论】:

  • 请检查您的 Dept 表,是否有列 ID?
  • 是的,部门表有。问题已解决。实际上,我需要区分左表中的列和右表中的列。

标签: sql sql-server join


【解决方案1】:

只需包含显式别名即可将Employee 表中的ID 列与Dept 表中的ID 列区分开来。实际上,最佳做法是始终在进行连接时通过别名引用列,因此您的查询应该如下所示:

SELECT e.ID AS employeeID,
       e.Name,
       e.DeptId,
       d.ID AS deptID,
       d.DeptName
FROM Employee e
INNER JOIN Dept d
    ON e.DeptID = d.ID

【讨论】:

    【解决方案2】:

    使用别名

    Select E.ID   as EmpID
         , E.Name
         , D.ID   as DepID
         , D.DeptName  
     From Employee E
     Inner Join Dept D 
     On E.Employee.DeptID = D.Dept.ID
    

    【讨论】:

      【解决方案3】:

      您也可以使用表名作为限定符而不是别名:

      Select 
          Employee.ID, Employee.Name, Dept.ID, Dept.DeptName
      from 
          Employee
      Inner Join 
          Dept On Employee.DeptID = Dept.ID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多