2012-04-22 61 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