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