如果没有条件与连接两侧的字段相等,则不能使用FULL OUTER JOIN
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果没有条件与连接两侧的字段相等,则不能使用FULL OUTER JOIN相关的知识,希望对你有一定的参考价值。
我有3张桌子
TABLE_4
- 那么
- 电话
- 电子邮件
- additionalColumns4
table_5
- 电话
- additionalColumns5
table_6
- 电话
- 电子邮件
- additionalColumns6
每个表都有不同的数据。
我想创建一个大表,连接所有可能的数据(一个人在1和3表,第二个只在2表等) - 并希望将它合并在一个大表中,如。
- table4.那么
- table4.phone
- table4.email
- table4.additionalColumns4
- table5.phone
- table5.additionalColumns5
- table6.phone
- table6.email
- table6.additionalColumns6 SELECT * FROM table_4 FULL JOIN table_5 ON table_5_field_s_mail_dmp_id = table_4_field_email_dmp_id FULL JOIN table_6 ON table_6_field_phone2_dmp_id = table_4_field_phone_dmp_id
效果很好,但是
SELECT
*
FROM
table_4
FULL JOIN
table_5
ON
table_5_field_s_mail_dmp_id =table_4_field_email_dmp_id
FULL JOIN
table_6
ON
table_6_field_phone2_dmp_id =table_4_field_phone_dmp_id
OR table_6_field_phone1_dmp_id =table_4_field_phone_dmp_id
OR table_6_field_workphone_dmp_id =table_4_field_phone_dmp_id
OR table_6_field_addphone_dmp_id =table_4_field_phone_dmp_id
OR table_6_field_email_dmp_id =table_5_field_s_mail_dmp_id
OR table_6_field_email_dmp_id =table_4_field_email_dmp_id
回报
错误:如果没有来自连接两侧的字段相等的条件,则不能使用FULL OUTER JOIN。
我无法解决这个错误以及如何解决我的问题
添加我检查
SELECT
*
FROM
table_4
FULL JOIN
table_6
ON
(table_6_field_phone2_dmp_id =table_4_field_phone_dmp_id
OR table_6_field_phone1_dmp_id =table_4_field_phone_dmp_id
)
并且它也会返回相同的错误。大查询不喜欢OR在完全加入条件下?
答案
编写单独的查询,然后使用COALESCE
。 (感谢发布a nice example的Ajit Deshmukh。)
以上是关于如果没有条件与连接两侧的字段相等,则不能使用FULL OUTER JOIN的主要内容,如果未能解决你的问题,请参考以下文章
FULL OUTER JOIN 不能在没有连接两边的字段相等的条件下使用
oracle 查询条件中判断两个字段相等时 一个字段为空则跳过