如何做没有重复列的左联接?

时间:2019-11-10 07:18:24

标签: sql

我必须联接2个表,而我要联接的第一个表包括:

Physicians (ID, FirstName, LastName, PracticeID, SpecialtyID, Email)

第二张表是:

PhysicianSpecialties( SpecialtyID, SpecialtyName)

我编写了此查询以将表连接在一起

Select *
from physicians
right join PhysicianSpecialities
on PhysicianSpecialities.SpecialtyID = Physicians.SpecialtyID

当我离开“加入他们”表格时,现在是

(ID, FirstName, LastName, PracticeID, SpecialtyID, Email, SpecialtyID, SpecialtyName)

我该如何重写它,以便只有一个“ SpecialtyID”列?

3 个答案:

答案 0 :(得分:1)

您没有指定正在使用的DBMS产品,但是:在标准SQL中,如果两个表中的连接列名称相同,则可以使用USING运算符进行连接。

在这种情况下,“重复”列将自动从结果中删除。

Select *
from physicians
  right join PhysicianSpecialities using (SpecialtyID)

尽管并非所有DBMS产品都支持。

答案 1 :(得分:0)

您需要指定两个表的列名,而不是(*

Select a.*,b.SpecialtyName
from physicians a
right join PhysicianSpecialities b
on b.SpecialtyID = a.SpecialtyID

答案 2 :(得分:0)

使用

SELECT 
    physicians.ID, physicians.FirstName, physicians.LastName, 
    physicians.PracticeID, physicians.SpecialtyID, physicians.Email, 
    PhysicianSpecialities.SpecialtyName

而不是SELECT *,因此您的查询如下:

SELECT 
    physicians.ID, physicians.FirstName, physicians.LastName, 
    physicians.PracticeID, physicians.SpecialtyID, physicians.Email, 
    PhysicianSpecialities.SpecialtyName
FROM
    physicians
LEFT JOIN 
    PhysicianSpecialities ON Physicians.SpecialtyID = PhysicianSpecialities.SpecialtyID;

我希望它将返回期望的结果。