考虑到以下SQL查询,我没有返回任何结果。如果我删除其中一个INNER JOIN
,则返回与外键关联的数据。
注意DefinitionID
和TermID
都与PolicyData表的主键def.ID
相关。
SELECT def.* FROM [Questions].[dbo].[PolicyDefinitions] def
INNER JOIN [Questions].[dbo].[PolicyData] p
ON def.ID = p.TermID
INNER JOIN [Questions].[dbo].[PolicyData] pd
ON def.ID = pd.DefinitionID
是否可以像这样加入表格?
答案 0 :(得分:1)
您实际上想要使用LEFT JOIN
,因为当所有连接的表都有匹配的行时,数据将仅与您的查询一起返回(使用INNER JOIN
),快速谷歌(其他搜索引擎是可用;-))将链接到许多文章。
SELECT
def.*
FROM
[Questions].[dbo].[PolicyDefinitions] def
LEFT JOIN [Questions].[dbo].[PolicyData] p ON def.ID = p.TermID
LEFT JOIN [Questions].[dbo].[PolicyData] pd ON def.ID = pd.DefinitionID
答案 1 :(得分:1)
您也可以只使用OR
进行1次加入SELECT
def.*
FROM
[Questions].[dbo].[PolicyDefinitions] def
JOIN [Questions].[dbo].[PolicyData] p ON def.ID = p.TermID OR def.ID = pd.DefinitionID