2

次のような2つの同一のテーブルがあります。

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);

うまくいきません..助けてください:)

4

3 に答える 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)
      )
;
于 2012-04-22T08:08:34.287 に答える
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

もっとエレガントで賢い方法があるかもしれませんが、それで重複が見つかります。

于 2012-04-22T08:04:30.540 に答える
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
于 2012-04-22T08:05:24.160 に答える