如何在MySQL中的多个表中检索匹配记录

问题描述 投票:2回答:3

我有两个相同的表,如:

table1
col1    col2    col3    col4    col5

table2
col1    col2    col3    col4    col5

我想比较表1和2,并在2个表之间找到相同的行(col1,col2,col3,col4等..)。

我想我们需要使用vtable或类似的东西..

我试过了

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

它不起作用..请帮助:)

mysql rows
3个回答
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
投票

Oracle语法,我确信在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
© www.soinside.com 2019 - 2024. All rights reserved.