我对JOIN
有疑问。
TABLE A | TABLE B |
-----------------------------------------|
PK | div | PK | div | val |
-----------------------------------------|
A | a | 1 | a | 10 |
B | b | 2 | a | 100 |
C | c | 3 | c | 9 |
------------------| 4 | c | 99 |
-----------------------
有两个类似上面的表,我一直试图连接两个表,但是我想查看TABLE A
中的所有行。
类似
SELECT T1.PK, T1.div, T2.val
FROM A T1
LEFT OUTER JOIN B T2
ON T1.div = T2.div
我希望结果如下所示。
PK | div | val |
-------------------------
A | a | 10 |
A | a | 100 |
B | null | null |
C | c | 9 |
C | c | 99 |
我已经尝试了所有我知道的JOIN
,但是B
因为它不存在而没有出现。是否可以显示TABLE A
上的所有行,如果null
上不存在TABLE B
呢?
谢谢!
答案 0 :(得分:1)
要进入结果集,您需要做的就是使用T2.Div,因为第二个表中不存在该值:
SELECT T1.PK, T2.div, T2.val
FROM A T1
LEFT OUTER JOIN B T2
ON T1.div = T2.div
答案 1 :(得分:1)
如果您将查询更改为
SELECT T1.PK, T2.div, T2.val
FROM A T1
LEFT OUTER JOIN B T2
ON T1.div = T2.div
(请注意,div
来自此处的T2
。),您将获得准确的发布结果(但可能以不同的顺序,如果需要,可以添加ORDER BY
子句一个特定的订单)。
您当前的查询将为您提供
PK | div | val |
-------------------------
A | a | 10 |
A | a | 100 |
B | b | null |
C | c | 9 |
C | c | 99 |
(请注意,div
是b
的{{1}}而不是PK
的行的B
。)