Select 来自两个数据库 - 合并但保留所有 headers
Select from two databases - Union but retain all headers
我已经搜索过这方面的帮助,但没有什么能完全符合我的要求,尽管我确信之前肯定有人问过。
Table 1 - table1
table1.date (date), table1.name (varchar(20))
Table 2 - table2
table2.date (date), table2.regnum (int(10))
我正在尝试显示按日期排序的两个表中数据的完整列表。
数据没有以任何方式连接,所以我认为 JOIN 是错误的方法。
当我使用 UNION 时,输出出现问题,因为第二列是 varchar 和 int 的交叉。
是否可以使用 UNION 得到一个只有日期合并而其他 headers 保持独立的结果。示例:
date (date), name (varchat(20)), regnum (int(10))
显然,来自 table1 的任何数据在 regnum 字段中都会有 NULL,而来自 table2 的任何数据在 name 字段中都会有 NULL。
您可以将值分隔到单独的列中以用于 union
操作:
select date, name, cast(NULL as signed) as regnum
from table1
union all
select date, NULL, regnum
from table2;
cast()
应该不是必需的,但它阐明了您正在尝试做的事情。
此外:您通常应该使用 union all
,除非您特别想承担删除重复项的开销。
我已经搜索过这方面的帮助,但没有什么能完全符合我的要求,尽管我确信之前肯定有人问过。
Table 1 - table1
table1.date (date), table1.name (varchar(20))
Table 2 - table2
table2.date (date), table2.regnum (int(10))
我正在尝试显示按日期排序的两个表中数据的完整列表。
数据没有以任何方式连接,所以我认为 JOIN 是错误的方法。
当我使用 UNION 时,输出出现问题,因为第二列是 varchar 和 int 的交叉。
是否可以使用 UNION 得到一个只有日期合并而其他 headers 保持独立的结果。示例:
date (date), name (varchat(20)), regnum (int(10))
显然,来自 table1 的任何数据在 regnum 字段中都会有 NULL,而来自 table2 的任何数据在 name 字段中都会有 NULL。
您可以将值分隔到单独的列中以用于 union
操作:
select date, name, cast(NULL as signed) as regnum
from table1
union all
select date, NULL, regnum
from table2;
cast()
应该不是必需的,但它阐明了您正在尝试做的事情。
此外:您通常应该使用 union all
,除非您特别想承担删除重复项的开销。