我必须联接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”列?
答案 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;
我希望它将返回期望的结果。