1. 程式人生 > >mysql 裡怎麼實現full join

mysql 裡怎麼實現full join

mysql現在還不支援full join ,那如果有這種需求怎麼辦呢?可以用union all來實現

資料來源如下

CREATE TABLE L AS
SELECT 'left_1' AS str,'1' AS v FROM dual UNION ALL
SELECT 'left_2','2' AS v FROM dual UNION ALL
SELECT 'left_3','3' AS v FROM dual UNION ALL
SELECT 'left_4','4' AS v FROM dual;

CREATE TABLE R AS
SELECT 'right_3' AS str,'3' AS v FROM dual UNION ALL
SELECT 'right_4','4' AS v FROM dual UNION ALL
SELECT 'right_5','5' AS v FROM dual UNION ALL
SELECT 'right_6','6' AS v FROM dual;
只需要left join 加 反連線就可以了
SELECT l.str AS left_str, r.str AS right_str
  FROM l
  LEFT JOIN r ON r.v = l.v
UNION ALL
SELECT l.str AS left_str, r.str AS right_str
  FROM l
 RIGHT JOIN r ON r.v = l.v
 WHERE l.v IS NULL
 ORDER BY 1 NULLS LAST, 2 NULLS LAST;