2014-02-17 111 views
0

我有一個問題,我認爲很簡單,但我似乎遇到了一些麻煩。MySQL加入多列查詢

我有兩個表。每個表具有完全相同的行。

我試圖執行與下面的查詢在兩個表聯接:

SELECT t1.`* FROM `person` as t1 
     JOIN `person_temp` as t2 
     on t1.`date` = t2.`date` 
     and t1.`name` = t2.`name` 
     and t1.`country_id`= t2.`country_id` 

此查詢的一點是要找到所有在T1匹配T2那天起,其中組合行,名稱和country_id是相同的(這三列組合在一起使記錄具有唯一性)。我不認爲這個查詢對我所要做的事是正確的,因爲如果我在兩個表中都有相同的確切數據,我會得到更多的匹配數。

關於如何編輯此查詢來完成我想要做的任何想法?

+0

請在sqlfiddle中發佈你的代碼和表結構,我們可以解決問題。 –

+0

這應該是正確的,除非你在表中有重複。 –

回答

1

請勿使用join。使用exists

SELECT t1.`* 
FROM `person` t1 
where exists (select 1 
       from `person_temp` as t2 
       where t1.`date` = t2.`date` 
       and t1.`name` = t2.`name` 
       and t1.`country_id`= t2.`country_id` 
      ); 

出於性能考慮,你想在person_temp(date, name, country_id)複合指數(列可以按任何順序)。