Как объединить повторяющееся имя столбца в объединениях в SQL Server?

#sql #sql-server #join

#sql #sql-сервер #Присоединиться

Вопрос:

У меня есть две таблицы, одна есть Employee , а другая есть Dept .

В Employee таблице есть столбцы ID , Name , и DeptId , а Dept в таблице есть столбцы ID , DeptName .

Теперь, если написать запрос:

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

Я получаю сообщение об ошибке, потому что он не знает, какой ID столбец я имею в виду. Как мне однозначно определить столбцы?

Комментарии:

1. Пожалуйста, проверьте таблицу вашего отдела, есть ли у нее идентификатор столбца?

2. Да, у таблицы отдела было. Проблема решена. На самом деле, мне нужно было отличить столбец в левой таблице от столбца в правой таблице.

Ответ №1:

Просто включите явные псевдонимы, чтобы отделить ID столбец в Employee таблице от ID столбца в Dept таблице. На самом деле, рекомендуется всегда ссылаться на столбец по псевдониму при выполнении объединения, поэтому ваш запрос должен выглядеть примерно так:

 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