加入2个表格以获取所有原料。获取所有不同的连接列
问题描述:
我有2个类似的表加入2个表格以获取所有原料。获取所有不同的连接列
CREATE TABLE arstel.b2b_join2(
id string
, name string
, col1 string
, col2 string
);
我填写他们的数据。第一张桌子。
INSERT INTO TABLE arstel.b2b_join1 VALUES
("1", "a", "a1", "a2")
, ("2", "b", "b1", "b2")
, ("3", "c", "c1", "c2")
, ("4", "d", "d1", "d2");
Secnd表
INSERT INTO TABLE arstel.b2b_join2 VALUES
("1", "a", "a11", "a22")
, ("2", "b", "b11", "b22")
, ("5", "e", "e11", "e22")
, ("6", "f", "f11", "f22");
我查询
SELECT
CASE WHEN a.id = NULL THEN b.id ELSE a.id END AS id
, CASE WHEN a.name = NULL THEN b.name ELSE a.name END AS name
, a.col1
, a.col2
, b.col1
, b.col2
FROM arstel.b2b_join1 a
FULL OUTER JOIN arstel.b2b_join2 b
ON a.id = b.id AND a.name = b.name;
返回从表a
所有的值,但不会从b
4 d d1 d2 NULL NULL
1 a a1 a2 a11 a22
NULL NULL NULL NULL e11 e22
2 b b1 b2 b11 b22
NULL NULL NULL NULL f11 f22
3 c c1 c2 NULL NULL
返回
id
和
name
其实我要的是
4 d d1 d2 NULL NULL
1 a a1 a2 a11 a22
5 e NULL NULL e11 e22
2 b b1 b2 b11 b22
6 f NULL NULL f11 f22
3 c c1 c2 NULL NULL
如何获得呢?
答
你不应该null
比较。改为使用is null
或is not null
。
你需要可以用COALESCE
待取得的结果。它返回第一个非空值。
SELECT
COALESCE(a.id,b.id) AS id
, COALESCE(a.name,b.name) AS name
, a.col1
, a.col2
, b.col1
, b.col2
FROM arstel.b2b_join1 a
FULL OUTER JOIN arstel.b2b_join2 b
ON a.id = b.id AND a.name = b.name;
我实际上在发布问题后认为是'null')但是不知道'coalesce'。谢谢 – Evgenii