select col_a, col_b, col_c from test1_1790
union all
select col_a, col_c, col_b from test2_1790;
或者,如果上述方法不能解决您的问题,那么在列中创建 ALIAS 如何: (查询与您的查询不同,但这里的关键是如何在列中添加别名。)
SELECT id_table_a,
desc_table_a,
table_b.id_user as iUserID,
table_c.field as iField
UNION
SELECT id_table_a,
desc_table_a,
table_c.id_user as iUserID,
table_c.field as iField
SELECT * FROM tabA
OUTER UNION CORR
SELECT * FROM tabB;
致:
+---+---+
| a | b |
+---+---+
| 1 | X |
| 2 | Y |
+---+---+
OUTER UNION CORR
+---+---+
| b | d |
+---+---+
| U | 1 |
+---+---+
<=>
+----+----+---+
| a | b | d |
+----+----+---+
| 1 | X | |
| 2 | Y | |
| | U | 1 |
+----+----+---+
需要 BY NAME 子句和 ON 列表。与其他集合表达式不同,OUTER UNION 的输出模式包括来自两侧的匹配列和不匹配列。这就造成了一种情况,即来自其中一侧的每一行都有“缺失的列”,而这些列只出现在另一侧。对于这些列,为“缺少的单元格”提供默认值。对于可为空的类型,默认值为空,而。非空类型的净默认值(例如,int 为0)。
名字
与 OUTER 一起使用时需要。子句指示联合不是根据位置而是根据列的名称来匹配值。如果未指定 BY NAME 子句,则按位置进行匹配。
如果 ON 子句包含“ *”符号(它可能被指定为列表的最后一个或唯一一个成员) ,那么允许在 ON 子句之外进行额外的名称匹配,并且结果的列包含所有匹配的列,按照它们在左参数中出现的顺序。
还有密码:
@result =
SELECT * FROM @left
OUTER UNION BY NAME ON (*)
SELECT * FROM @right;