Wil*_*mar 3 sql-server t-sql view union
我有几个表,我想以与Python Pandas Concatenate类似的方式合并。我不想复制信息,因为它相当大。我想有一个VIEW
喜欢的行为。让我用一个假的例子来说明,据我所知是行不通的,只是为了正确解释我想要实现的目标。
假设我有这两个表:
CREATE TABLE table_1 (
[a] [bigint] NOT NULL,
[b] [bigint] NOT NULL,
[c] [varchar] (32) NULL,
[d] [bigint] NULL,
)
GO
CREATE TABLE table_2 (
[a] [bigint] NOT NULL,
[b] [bigint] NOT NULL,
[c] [varchar] (32) NULL,
[e] [varchar](256) NULL,
)
GO
Run Code Online (Sandbox Code Playgroud)
哪里a, b, c
是等价的,但保存不同的数据。 d
存在于table_1
但不存在table_2
和e
存在于table_2
但不存在table_1
。
表不保存任何公共数据。也就是说,JOIN
任何字段上的 a 都会带来零结果。
我希望能够执行以下操作(或等效的操作。我知道我所展示的内容不可行):
CREATE VIEW MyUnion FROM(
SELECT * FROM table_1 UNION SELECT * FROM table_2) AS alldata;
Run Code Online (Sandbox Code Playgroud)
这样,如果我运行:
SELECT * FROM MyUnion;
Run Code Online (Sandbox Code Playgroud)
并且会得到类似(1
并且One
只是表示通用数字或字符串的填充符):
a b c d e
1 1 One 1 NULL
1 1 One NULL One
Run Code Online (Sandbox Code Playgroud)
有没有办法在不复制数据的情况下做这样的事情?(即创建另一个包含所有内容的表)
谢谢!
像这样的东西?:
CREATE VIEW MyUnion AS
SELECT
a, b, c,
d,
CAST(NULL AS varchar(32)) AS e
FROM table_1
UNION ALL
SELECT
a, b, c,
CAST(NULL AS bigint) AS d,
e
FROM table_2 ;
Run Code Online (Sandbox Code Playgroud)