假设我有两个表:
表1
Col
1
3
4
5
6
9
和表2
Col
2
4
6
8
如何合并这两个表,所以我有1-9,如果一个数字只出现在一个表中,另一个表中的相应位置是否为null?谢谢。
答案 0 :(得分:1)
我假设你想要至少有一个表中实际存在的数字,这些数字不会给你一行7
;
你正在寻找的东西似乎是FULL OUTER JOIN
,它几乎适用于除MySQL以外的任何RDBMS;
SELECT a.col col_a, b.col col_b
FROM Table1 a
FULL OUTER JOIN Table2 b ON a.col = b.col
ORDER BY COALESCE(a.col, b.col);
可悲的是,MySQL没有FULL OUTER JOIN
,所以你必须在UNION
和LEFT JOIN
之间使用RIGHT JOIN
执行相同的操作;
SELECT * FROM (
SELECT a.col col_a, b.col col_b
FROM Table1 a
LEFT JOIN Table2 b ON a.col = b.col
UNION
SELECT a.col col_a, b.col col_b
FROM Table1 a
RIGHT JOIN Table2 b ON a.col = b.col
)z
ORDER BY COALESCE(col_a, col_b);
答案 1 :(得分:0)
如果我没错。你需要两个表的记录。 (如果我错了,请纠正我)
尝试按以从两个表中获取数据:
select col from Table1
union
select col from Table2
select col from Table1
union all
select col from Table2
注意:强>
UNION
删除重复记录(结果中的所有列都相同),UNION ALL
没有。
使用UNION vs UNION ALL
时性能受到影响,因为数据库服务器必须执行其他工作才能删除重复的行,但通常您不需要重复项(特别是在开发报表时)。
答案 2 :(得分:0)
你可以使用union尝试这个:
SELECT * FROM (SELECT col AS value FROM table1
UNION
SELECT col AS value FROM table2)t1
ORDER BY value
尝试发表您的评论:
由于