我必须连接两个表,我要连接的第一个表包括:
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“列?
发布于 2019-11-10 08:21:03
您没有指定正在使用的DBMS产品,但是:在标准SQL中,如果两个表中的连接列具有相同的名称,则可以使用USING
操作符进行连接。
在这种情况下,“重复的”列将自动从结果中删除。
Select *
from physicians
right join PhysicianSpecialities using (SpecialtyID)
不过,并不是所有的DBMS产品都支持它。
发布于 2019-11-10 07:25:17
您需要指定两个表的列名,而不是(*
)
Select a.*,b.SpecialtyName
from physicians a
right join PhysicianSpecialities b
on b.SpecialtyID = a.SpecialtyID
发布于 2019-11-10 07:26:52
使用
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;
我希望它能返回预期的结果。
https://stackoverflow.com/questions/58786516
复制