【发布时间】:2011-04-07 01:11:18
【问题描述】:
假设我有两张桌子:
CREATE TABLE A(
id INT PRIMARY KEY,
x INT,
y INT
)
CREATE TABLE B(
id INT PRIMARY KEY,
x INT,
y INT,
)
表 A 包含从其他供应商引入的数据,而表 B 是我们的数据。为简单起见,我让这些表在架构方面完全相同,但表 B 可能是表 A 的超集(它会包含一些表 A 不会包含的列)。
我想做的是创建一个视图 C,其中包含列 id、x 和 y,以便值来自表 B,除非它们为 NULL,在这种情况下它们将来自表 A。例如,假设我有以下内容:
INSERT INTO A (id, x, y)
VALUES (1, 2, 3);
INSERT INTO B (id, x, y)
VALUES (1, NULL, NULL);
INSERT INTO A (id, x, y)
VALUES (2, 3, 4);
INSERT INTO B (id, x, y)
VALUES (2, 5, 6);
INSERT INTO A(id, x, y)
VALUES (3, 4, 5);
INSERT INTO B(id, x, y)
VALUES (3, 5, NULL);
所以如果我从 C 中选择 *,我会得到以下行:
(1, 2, 3)
(2, 5, 6)
(3, 5, 5)
如何创建这样的视图?
【问题讨论】: