Sql 如何对同一主键对应的两列使用联接?
我有一个有五列的表:Sql 如何对同一主键对应的两列使用联接?,sql,sql-server,Sql,Sql Server,我有一个有五列的表: streetId, streetName, areaId, ISfSectionId1, ISFsectionId2 其中,areaId是表area的外键,isfsectionid1和isfsectionid2是同一主键isfsectionId的外键(isfsectionid2可以有空值) 我正在使用此查询加入他们 SELECT s.streetId, s.streetName, a.areaName, i.isfsectionName, d.ISFsectio
streetId, streetName, areaId, ISfSectionId1, ISFsectionId2
其中,areaId
是表area
的外键,isfsectionid1
和isfsectionid2
是同一主键isfsectionId
的外键(isfsectionid2可以有空值)
我正在使用此查询加入他们
SELECT
s.streetId, s.streetName, a.areaName, i.isfsectionName, d.ISFsectionName
FROM
area a
INNER JOIN
street s ON s.areaId = a.areaId
INNER JOIN
ISFsections i ON s.fasileone = i.ISFsectionId
JOIN
ISFsections d ON s.fasiletwo = d.ISFsectionId
如果没有最后一个连接,它可以正常工作,但是在添加最后一个连接时,它只返回ISFsectionId2的记录
有什么问题吗?尝试
左联接
s而不是当isfsectionId2为空时,如果使用内部联接,则不会得到任何行。选择左连接,比如M.Ali Saysryleft join
s,而不是isfsectionId2为空时,如果使用内部连接,则不会得到任何行。像阿里先生说的那样在那里左转
SELECT s.streetId
,s.streetName
,a.areaName
,i.isfsectionName
,d.ISFsectionName
from area a
INNER join street s on s.areaId = a.areaId
LEFT join ISFsections i on s.fasileone = i.ISFsectionId
LEFT join ISFsections d on s.fasiletwo = d.ISFsectionId