2012-04-22 101 views
2

我有兩個相同的表,例如:如何檢索跨多個表的匹配記錄,在MySQL

table1 
col1 col2 col3 col4 col5 

table2 
col1 col2 col3 col4 col5 

我想比對錶1和2,找到相同的行(COL1,COL2,COL3,COL4等。 )在兩張桌子之間。

我認爲,我們需要使用虛函數表或類似的東西..

我試圖

SELECT * FROM TABLE1 WHERE COL1, COL2, COL3, COL4 IN 
     (SELECT COL1, COL2, COL3, COL4 FROM TABLE2); 

它不工作.. 幫助,請:)

回答

3
SELECT * 
FROM TABLE1 t 
WHERE EXISTS 
     (SELECT * 
     FROM TABLE2 tt 
     WHERE (COL1, COL2, COL3, COL4) 
      = (t.COL1, t.COL2, t.COL3, t.COL4) 
    ) 
; 
1

甲骨文語法,這是我我確定在MySql中幾乎完全相同:

SELECT * 
    FROM TABLE1, TABLE2 
    WHERE TABLE1.COL1 = TABLE2.COL1 
    AND TABLE1.COL2 = TABLE2.COL2 
    AND TABLE1.COL3 = TABLE2.COL3 
    AND TABLE1.COL4 = TABLE2.COL4 

有可能是精煉和聰明的方式,但會找到你的重複。

1

如何:

SELECT table1.* FROM table1 
    INNER JOIN table1 ON table2.col1 = table1.col1 
    WHERE table1.col2 = table2.col2 AND table1.col3 = table2.col3 
    AND table1.col4 = table2.col4 AND table1.col5 = table2.col5