我有以下两个数据库表
TableA
PK_A FK_B FK_USER
1 1 userLogin
2 2 userLogin
3 3 otherUserLogin
TableB
PK_B
1
2
3
4
我需要的是一个查询,在这种情况下返回特定用户的以下结果'userLogin'
Result
PK_B PK_A FK_USER
1 1 userLogin
2 2 userLogin
3 3
4
请注意,查询必须始终返回表B所具有的所有项目。
提前致谢 节日快乐
答案 0 :(得分:3)
试试这个:
SELECT b.PK_B, a.PK_A, a2.FK_USER
FROM TableB AS b LEFT OUTER JOIN TableA AS a
ON b.PK_B = a.FK_B
LEFT OUTER JOIN TableA AS a2
ON a.PK_A = a2.PK_A
AND a2.FK_USER = 'userLogin'
TableA的额外LEFT OUTER JOIN
是由于海报的输出请求所致:
Result
PK_B PK_A FK_USER
1 1 userLogin
2 2 userLogin
3 3
4
FK_USER
仅返回'userLogin'
答案 1 :(得分:1)
尝试:
SELECT b.PK_B,
a.PK_A,
case when a2.FK_USER = 'userLogin' then 'userLogin' end as FK_USER
FROM TableB AS b
LEFT OUTER JOIN TableA AS a ON b.PK_B = a.FK_B