SQL雙向加入
回答
使用full join
子句和null
檢查使用任何可用的功能在你的DBMS(如isnull
或3210),例如:
select isnull(t1.id, t2.id), isnull(t1.a, 0), isnull(t2.b, 0)
from table1 t1
full join table2 t2 on t2.id = t1.id
感謝快速回答Kirill 它對我來說就像一個魅力! – 2012-03-18 07:06:15
@YosiHavia,歡迎光臨。 – 2012-03-18 07:06:51
這將做到這一點對Oracle和SQL Server;
SELECT COALESCE(a.id, b.id), COALESCE(a.a, 0), COALESCE(b.b, 0)
FROM table1 a
FULL OUTER JOIN table2 b
ON a.id=b.id
對於缺少OUTER JOIN的MYSQL,您需要對其進行更改;
SELECT a.id, COALESCE(a.a, 0), COALESCE(b.b, 0)
FROM table1 a LEFT JOIN table2 b ON a.id=b.id
UNION
SELECT b.id, COALESCE(a.a,0), COALESCE(b.b, 0)
FROM table1 a RIGHT JOIN table2 b ON a.id=b.id
FULL OUTER JOIN解決方案已發佈。
對於不支持FULL OUTER JOIN(例如MySQL)的數據庫,也發佈了使用UNION的版本。
最好修改UNION查詢來使用UNION ALL。訣竅是確保第二個外連接表的NOT NULL列爲NULL。
select table1.id table1.a, coalesce(table2.b,0) as b
from table1
left outer join table2 on table2.id=table1.id
union all
select table2.id coalesce(table1.a,0) as a, table2.b
from table2
left outer join table1 on table1.id=table2.id
where table1.id is null
的UNION ALL溶液甚至可以是用於支持FULL OUTER JOIN數據庫有用。我看到甲骨文用一個完整的OUTER JOIN表現糟糕的表現,而上面的UNION ALL解決方案像一個魅力。
- 1. 雙左加入SQL?
- 2. 條件雙向加入?
- 3. SQL Max和雙加入
- 4. 插入雙向量
- 5. SQL雙重加入排序依據
- 6. PHP雙向加密
- 7. SQL Azure和雙向電力
- 8. SQL Server雙向級聯?
- 9. PHP雙向加密加密
- 10. AES雙向加密加鹽
- 11. MySQL雙表加入雙表
- 12. JPA ManyToMany雙向插入
- 13. 插入雙向鏈表
- 14. Laravel輸入雙重定向
- 15. Hadoop多個輸入錯誤分組 - 雙向加入練習
- 16. php中的雙向加密
- 17. 添加到雙向鏈表
- 18. 急於在「雙向」加載
- 19. 向對方添加雙打
- 20. Java雙向加密庫
- 21. 雙向加密+查找?
- 22. 雙內加入DB
- 23. 雙向到VHDL雙向
- 24. OneToOne雙向雙向關聯
- 25. 插入雙Sql服務器
- 26. 向SelectionListener添加雙向功能
- 27. XMPP:向pubsub添加雙向性?
- 28. 方向(My)SQL左/右/內部加入
- 29. SQL複雜的雙向分層關係
- 30. SQL構造一個雙向圖
你正在使用哪些DBMS? – 2012-03-18 07:01:17