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. AES双向加密加盐
- 3. PHP双向加密加密
- 4. SQL Server双向级联?
- 5. SQL Azure和双向电力
- 6. JPA ManyToMany双向插入
- 7. Laravel输入双重定向
- 8. Hadoop多个输入错误分组 - 双向加入练习
- 9. Java双向加密库
- 10. 向对方添加双打
- 11. 急于在“双向”加载
- 12. php中的双向加密
- 13. 双内加入DB
- 14. OneToOne双向双向关联
- 15. 向SelectionListener添加双向功能
- 16. XMPP:向pubsub添加双向性?
- 17. 插入双Sql服务器
- 18. 使用SQL Server进行双向复制
- 19. SQL查询中的双向关系
- 20. 最后在双向链表中追加或插入
- 21. MySQL的双重加入
- 22. 双人加入选择
- 23. 双重加入的Postgres
- 24. MySQL缓慢双加入
- 25. PostgreSQL的双数加入
- 26. 在双向链表中末尾插入
- 27. 双向列入类和模板实例
- 28. 双向链接的用户输入
- 29. Seam的双向注入和焊接
- 30. Angular 2时间输入双向绑定
你正在使用哪些DBMS? – 2012-03-18 07:01:17