web-dev-qa-db-ja.com

Mysql結合は重複する行を与える

2つのテーブルがあり、それら2つのテーブルから共通のレコードを取得するために結合を使用しています。次のクエリを使用しましたが、問題はレコードが2倍になることです。クエリは次のとおりです

SELECT * FROM pos_metrics pm INNER JOIN pos_product_selling pps ON   
pm.p_id=pps.p_id WHERE pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1

pos_metricsテーブル:
enter image description here

pos_product_sellingテーブル: enter image description here

出力:

enter image description here

編集
GROUP BYとDISTINCTを一緒に使用しようとすると、重複が発生しませんが、2番目のテーブルの値が繰り返されます。他の解決策はありますか?

18
Deepak

pos_metricsテーブルに主キーを追加してpos_product_sellingテーブルに導入し、主キーと他の基準に基づいてJOINを実行します。その場合、これらの重複は取得されません。

ここで重複しているのは、値に基づいて両方のテーブルで一意の比較が行われる可能性がないためです。

このようなものを試してください

GROUP BY pos_product_selling.metrics
14
Jayakrishnan K

これを試して:

SELECT DISTINCT * FROM ...
GROUP BY pm.metrics
8
nunu

重複を排除するには、以下を使用します。

select distinct * from ...

しかし、私はあなたの質問が何か他のものについてであると感じています-そして、あなたはより多くの助けのために特定のコードを投稿する必要があるでしょう。

4
SELECT * FROM pos_metrics pm, pos_product_selling pps
Where pm.p_id=pps.p_id AND pm.p_id='0' AND pps.pos_buying_id='0' AND pm.type=1

上記のクエリを試してください

1
gmhk