0

私はこのクエリに必死です。table1 と table2 の 2 つのテーブルがあります。テーブルは同じですが、データが異なります。列コードと製造元ごとに重複を削除しようとしています。そのためには、table1 からの最終結果 ID table2 からの ID と、コードとメーカーの列も必要です

 SELECT * FROM ( 
      SELECT id,code,manufacturer FROM table1 WHERE manufacturer = 1 
      UNION SELECT id,code,manufacturer FROM table2 WHERE manufacturer = 1
 ) AS t GROUP BY code HAVING COUNT(*) > 1

しかし、結果として、テーブル1から値のみを取得しました。それは問題ありませんが、table2 からも ID を取得する必要があります。誰でもこれを行う方法のヒントを教えてください。

4

1 に答える 1

0

2 つの基本的な問題があります。

問題 1:は重複を削除するため、使用すべきときに を
使用しています!UNIONUNION ALLUNION

問題 2:
これは問題に対処する正しい方法ではありません。ユニオンではなく、単純なjoinを使用する必要があります。
これを試して:

 SELECT
     t1.id as table1_id,
     t2.id as table2_id,
     t1.code,
     t1.manufacturer
 FROM table1 t1
 JOIN table2 t2 
     ON t2.code = t1.code
     AND t2.manufacturer = t1.manufacturer
 WHERE manufacturer = 1 -- this WHERE clause is optional

この句の使用はWHERE少し奇妙です。すべてのメーカーからすべての重複を取得するには、句を削除することを検討してください。

于 2012-12-08T11:42:19.457 に答える