如果没有连接两端的字段相等的条件,则不能使用完全外部连接



我有 3 个表,例如

table_4

  • 名字
  • 电话
  • 电子邮件
  • 附加列4

table_5

  • 电话
  • 附加列5

table_6

  • 电话
  • 电子邮件
  • 附加列6

每个表都有不同的数据片段。

我想创建一个大表,连接所有可能的数据(一个人在 1 和 3 表中,第二个人在 2 个表中等)——并希望将其合并到一个大表中,例如.

  • table4.name
  • 表4.电话
  • table4.email
  • 表4.附加列4
  • 表5.电话
  • 表5.附加列5
  • 表6.电话
  • table6.email
  • 表6.附加列6

    选择 * 从 table_4 完全加入 table_5 上 table_5_field_s_mail_dmp_id =table_4_field_email_dmp_id 完全加入 table_6 上 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 

返回

错误:如果没有连接两端的字段相等的条件,则无法使用完全外部联接。

我无法消除此错误以及如何解决我的问题

添加 我检查了

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。(功劳归于阿吉特·德什穆克, 谁发布了一个很好的例子。

最新更新