· 7 years ago · Sep 09, 2018, 07:56 AM
1MySQL: FULL OUTER JOIN - How do I merge one column?
2SELECT *
3FROM table1
4LEFT OUTER JOIN table2
5ON table1.`id`=table2.`id`
6UNION
7SELECT *
8FROM table1
9RIGHT OUTER JOIN table2
10ON table1.`id`=table2.`id`
11
12SELECT *
13FROM table1
14LEFT OUTER JOIN table2
15ON table1.`id`=table2.`id`
16UNION
17SELECT *
18FROM table1
19RIGHT OUTER JOIN table2
20ON table1.`id`=table2.`id`
21
22SELECT t1.id,
23 t1.value,
24 t2.value2
25 FROM table1 t1
26 LEFT JOIN table2 t2 ON t2.id = t1.id
27UNION
28 SELECT t2.id,
29 t1.value,
30 t2.value2
31 FROM TABLE1 t1
32RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
33
34SELECT t1.id,
35 t1.value,
36 t2.value2
37 FROM table1 t1
38 LEFT JOIN table2 t2 ON t2.id = t1.id
39UNION
40 SELECT t2.id,
41 t1.value,
42 t2.value2
43 FROM TABLE1 t1
44RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
45
46SELECT t1.id,
47 t1.value,
48 t2.value2
49 FROM table1 t1
50 LEFT JOIN table2 t2 ON t2.id = t1.id
51UNION
52 SELECT t2.id,
53 t1.value,
54 t2.value2
55 FROM TABLE1 t1
56RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
57
58DROP TABLE IF EXISTS `example`.`table1`;
59CREATE TABLE `example`.`table1` (
60 `id` int(10) unsigned NOT NULL default '0',
61 `value` varchar(45) NOT NULL default ''
62) ENGINE=InnoDB DEFAULT CHARSET=latin1;
63
64INSERT INTO table1 VALUES (1, 'a'), (2, 'c'), (3, 'e');
65
66DROP TABLE IF EXISTS `example`.`table2`;
67CREATE TABLE `example`.`table2` (
68 `id` int(10) unsigned NOT NULL default '0',
69 `value2` varchar(45) NOT NULL default ''
70) ENGINE=InnoDB DEFAULT CHARSET=latin1;
71
72INSERT INTO table1 VALUES (1, 'b'), (3, 'd'), (4, 'f');
73
74SELECT ISNULL(t1.id, t2.id) AS id, t1.value1, t2.value2
75FROM table1 t1
76FULL OUTER JOIN table2 t2 ON t1.id = t2.id