假設我有兩個表:如何製作一個「覆蓋」另一個表格?
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);
所以,如果我SELECT * FROM C,我會得到以下行:
(1, 2, 3)
(2, 5, 6)
(3, 5, 5)
我怎麼能創造這樣的看法?
或者使用COALESCE(如果你被允許做在一個視圖中,我不知道)。 – Hammerite 2010-09-01 22:00:01
是的 - 你應該可以在視圖中合併。 – user158017 2010-09-02 00:02:59
從這個問題來看,默認值應該是** B **,而不是A. – 2010-09-02 12:24:16