我对MySQL中的FULL OUTER JOIN有疑问。我有两个(或更多表):
table1 table2 ID值ID值2 1 a 1 b 2 c 3 d 3 e 4楼
我已经使用此查询来加入我的行列:
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.`id`=table2.`id` UNION SELECT * FROM table1 RIGHT OUTER JOIN table2 ON table1.`id`=table2.`id`
要得到:
ID值1 ID值2 1 a 1 b 2 c NULL NULL 3天3天 NULL NULL 4 f
我的问题是,我无法同时将两个id列折叠为一列来获取此信息:
id value1 value2 1磅 2 c空 3版 4 NULL f
有什么建议吗?
SELECT t1.id, t1.value, t2.value2 FROM table1 t1 LEFT JOIN table2 t2 ON t2.id = t1.id UNION SELECT t2.id, t1.value, t2.value2 FROM TABLE1 t1 RIGHT JOIN TABLE2 t2 ON t2.id = t1.id
该UNION操作者除去行/记录重复的,所以你必须列适当地定义/列表。
UNION
DROP TABLE IF EXISTS `example`.`table1`; CREATE TABLE `example`.`table1` ( `id` int(10) unsigned NOT NULL default '0', `value` varchar(45) NOT NULL default '' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO table1 VALUES (1, 'a'), (2, 'c'), (3, 'e'); DROP TABLE IF EXISTS `example`.`table2`; CREATE TABLE `example`.`table2` ( `id` int(10) unsigned NOT NULL default '0', `value2` varchar(45) NOT NULL default '' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO table2 VALUES (1, 'b'), (3, 'd'), (4, 'f');
编辑:上面的固定线