我有兩個標題相同、行數和列數相同的表--唯一不同的是,表1中的記錄在表2中會缺失,反之亦然。 因此,如果表1有50%的記錄,那么表2將有另外50%的記錄。
我想合并這兩個表以得到一個完整的1。我已經嘗試了 JOINS、UNION ALL、UPDATE & INSERT INTO,但都沒有成功
。UNION ALL很接近,但對所有帶有 "多值域 "的列給出了一個錯誤,UPDATE / INSERT INTO也因為多值域而給出了一個錯誤。INNER JOIN完全沒有填補空白。
表1
--ID-Header1-Header2-Header3
1 app1 org1
2 lem2
3 app3 org3
4 lem4
表2
--ID-Header1-Header2-Header3
1 lem1
2 app2 org2
3 lem3
4 app4 org4
uj5u.com熱心網友回復:
對于你的樣本資料,你可以直接使用inner join:
select t1.id, nz(t1.header1, t2.header1)。
nz(t1.header2, t2.header2)。
nz(t1.header3, t2.header3)
from table1 t1 inner join
table2 t2
on t1.id = t2.id
uj5u.com熱心網友回復:
假設table1和table2沒有完全匹配的ID值,并且你希望固定的資料出現在table3中,那么你需要同時UNION(不是UNION ALL)和LEFT OUTER JOIN,像這樣:
INSERT INTO table3( ID, Header1, Header2, Header3 )
SELECT= SELECT=
u.ID。
u.Header1,
u.Header2,
u.Header3
from
(
SELECT
t1.ID。
IIF( ( t1.Header1 IS NULL OR LEN(t1.Header1) = 0 ) AND t2.Header1 IS NOT NULL, t2.Header1, t1.Header1 ) AS Header1。
IIF( ( t1.Header2 IS NULL OR LEN(t1.Header2) = 0 ) AND t2.Header2 IS NOT NULL, t2.Header2, t1.Header2 ) AS Header2。
IIF( ( t1.Header3 IS NULL OR LEN(t1.Header3) = 0 ) AND t2.Header3 IS NOT NULL, t2.Header3, t1.Header3 ) as Header3
FROM[/span
table1 AS t1
LEFT OUTER JOIN table2 AS t2 ON t1。 = t2.ID
UNION[/span
SELECT
t2.ID。
IIF( ( t2.Header1 IS NULL OR LEN(t2.Header1) = 0 ) AND t1.Header1 IS NOT NULL, t1.Header1, t2.Header1 ) AS Header1。
IIF( ( t2.Header2 IS NULL OR LEN(t2.Header2) = 0 ) AND t1.Header2 IS NOT NULL, t1.Header2, t2.Header2 ) AS Header2。
IIF( ( t2.Header3 IS NULL OR LEN(t2.Header3) = 0 ) AND t1.Header3 IS NOT NULL, t1.Header3, t2.Header3 ) AS Header3
FROM[/span
table2 AS t2
LEFT OUTER JOIN table1 AS t1 ON t1。 = t2.ID
) AS u
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/314458.html
標籤:
上一篇:SQL-我有兩個日期字串,回傳len(9),m/dd/yyyy和mm/d/yyyy。怎樣才能幫助選擇格式?
下一篇:MSAccess中的標準
