赞
踩
先说说期望的效果,希望是左表和右表连接,用ID关联。如果只出现左边的数据那么就显示只有左边的数据,如果只出现右表的数据就显示右表的信息,如果都出现就以左表的字段为准。
首先让我们创建一个左边,包含两列:
CREATE TABLE dcp_dw_datamining.temp_a_outer ( id INT, label STRING );
接着左边插入三条数据:
INSERT INTO dcp_dw_datamining.temp_a_outer VALUES (1,'a1'),(2,'a2'),(3,'a3');
接着创建一个右表:
CREATE TABLE dcp_dw_datamining.temp_b_outer ( id INT, label STRING, lb STRING );
接着右表插入三条数据: INSERT INTO dcp_dw_datamining.temp_b_outer VALUES (1,'b1','f1'),(2,'b2','f2'),(4,'b4','f4');
如果左表和右表使用INNER JOIN的语句是:
SELECT a.id, a.label, b.lb FROM dcp_dw_datamining.temp_a_outer AS a JOIN dcp_dw_datamining.temp_b_outer AS b ON a.id = b.id
结果如下,与希望的结果并不一致:
最后修改成这样:
SELECT CASE WHEN a.id IS NULL THEN b.id ELSE a.id END AS id, CASE WHEN a.label IS NULL THEN b.label ELSE a.label END AS label, b.lb FROM dcp_dw_datamining.temp_a_outer AS a FULL OUTER JOIN dcp_dw_datamining.temp_b_outer AS b ON a.id = b.id
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。