在SQL中是否可以通过条件连接从2个表中选择数据,当第二个表不满足条件时,从中选择空值?
我已经这样做了:
select * from Achievements left join (select * from PlayerAchievements where userId = 2) as t1 on t1.achievementsId = Achievements.Id
但我想知道是否有可能在没有子查询的情况下实现相同的结果?
答案 0 :(得分:1)
您可以使用LEFT JOIN
使用以下解决方案。附加条件(userId = 2
)用于映射条件(ON
)而不是WHERE
。因此,如果成就的ID与Achievements
匹配,则显示左表(PlayerAchievements
)的所有行,并仅附加正确表(userId
)的信息。
SELECT * FROM Achievements A
LEFT JOIN PlayerAchievements PA ON A.Id = PA.achievementsId AND PA.userId = 2