首页 > 解决方案 > 使用完全连接但不使用左连接时出现问题。为什么?

问题描述

当我left join在不同的数据库上使用 a 时,它可以工作,但当我使用inner join. 为什么 ?

SELECT tkblue_tklabel_dev_data.EmailContent.*, tkblue_tklabel_dev_archdata.EmailTracking.*
FROM tkblue_tklabel_dev_data.EmailContent
FULL JOIN tkblue_tklabel_dev_archdata.EmailTracking ON tkblue_tklabel_dev_archdata.EmailTracking.idEmailTracking = tkblue_tklabel_dev_data.EmailContent.idEmailTracking

未知表 'tkblue_tklabel_dev_data.EmailContent'

但是使用的时候

SELECT tkblue_tklabel_dev_data.EmailContent.*, tkblue_tklabel_dev_archdata.EmailTracking.*
FROM tkblue_tklabel_dev_data.EmailContent
LEFT JOIN tkblue_tklabel_dev_archdata.EmailTracking ON tkblue_tklabel_dev_archdata.EmailTracking.idEmailTracking =
tkblue_tklabel_dev_data.EmailContent.idEmailTracking

我没有这个错误信息,但我只能得到左表的结果。或者,我希望所有结果都像完全加入一样。

标签: mysql

解决方案


mysql 中不存在完全连接,但您可以在 UNION 中使用左连接和右连接产生相同的结果

SELECT tkblue_tklabel_dev_data.EmailContent.*
      , tkblue_tklabel_dev_archdata.EmailTracking.*
FROM tkblue_tklabel_dev_data.EmailContent
LEFT JOIN tkblue_tklabel_dev_archdata.EmailTracking  
  ON tkblue_tklabel_dev_archdata.EmailTracking.idEmailTracking = tkblue_tklabel_dev_data.EmailContent.idEmailTracking
UNION 
SELECT tkblue_tklabel_dev_data.EmailContent.*
      , tkblue_tklabel_dev_archdata.EmailTracking.*
FROM tkblue_tklabel_dev_data.EmailContent
RIGHT JOIN tkblue_tklabel_dev_archdata.EmailTracking  
  ON tkblue_tklabel_dev_archdata.EmailTracking.idEmailTracking = tkblue_tklabel_dev_data.EmailContent.idEmailTracking

推荐阅读