SQL查询以显示数据

SQL查询以显示数据,sql,Sql,我有以下两个数据库表 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

我有以下两个数据库表

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中的所有项

提前谢谢 节日快乐

试试这个:

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'
表A的额外
左侧外部连接是由于海报要求输出:

Result

PK_B     PK_A     FK_USER
1        1        userLogin
2        2        userLogin
3        3
4
其中,
FK\u USER
仅返回与
'userLogin'
匹配的内容,请尝试以下操作:

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'
表A的额外
左侧外部连接是由于海报要求输出:

Result

PK_B     PK_A     FK_USER
1        1        userLogin
2        2        userLogin
3        3
4
其中,
FK\u USER
仅返回与
'userLogin'
匹配的内容,请尝试:

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
尝试:


为什么otherUserLogin没有显示在第三个输出行上?这就是你想要的吗?如果是这样,您如何知道不显示它?为什么otherUserLogin不显示在第三个输出行上?这就是你想要的吗?如果是这样的话,你怎么知道不显示它呢?使用WHERE子句将外部连接变回内部连接。将WHERE替换为,并将条件更改为加入条件的一部分。Yikes,太遗憾了。修好了!谢谢你的发现,@MarkBannister!使用WHERE子句将外部联接转换回内部联接。将WHERE替换为,并将条件更改为加入条件的一部分。Yikes,太遗憾了。修好了!谢谢你的发现,@MarkBannister!