2016-06-16 1 views
0

この質問は既に回答済みですが、私はそれを見つけることができない、または答えが複雑すぎると確信しています。私はSQLに慣れていないので、これを一般的にどのように語るべきかはわかりません。SQLは2つの値が繰り返されるすべての行を返します

私は、デバイスにインストールされたソフトウェアのmySQLデータベースを持っています。すべてのデータを取得するためのクエリには、より多くのフィールドと結合がありますが、簡潔にするために、いくつかを示しました。デバイスに同じ製品ファミリのソフトウェアが複数インストールされている場合をすべて列挙したレポートを作成するために、別の次元を追加する必要があります。

sample

今、私は一種のようなコードを持っており、私が必要なものをやっていません。私はexistsに関するいくつかの情報を見てきましたが、例が複数の結合を考慮していなかったので、構文が私をエスケープします。助けて?

+0

最初に、私はすべてのスキーマを持っておらず、スキーマのいくつかの例を追加し、期待される結果がどのようになるかは非常に助けになります。しかし、私は 'groups(devices.name)> 0を持つdevices.nameでグループ化する、またはこのようなことをしたいと思っています。 –

+0

あなたの質問は良く書かれていません。 'select'1には、集約されていない列も集約関数の引数もあります。 –

+0

私はサブセットを作ったので、おそらくそれは私を傷つける。しかし、はい、私はそれが不十分に書かれていると確信しています!したがって、質問:) – Allegra

答えて

1

このトピックには多くの回答がありますが、必ずしも用語を知っているわけではありません。重複した値を見つける方法を探しています。

これは基本的に2段階の処理です。あなたがそれらを必要とする場合は、元のレコードに戻ってそれを関連付ける2重複を見つける1。 2番目の部分はオプションです。だから、文字通りあなたが

を提供し、クエリの重複のすべてがHAVING COUNT(*) > 1group by後のステートメントを追加見つけるため

。いくつの重複があるかを知りたい場合は、計算された列を追加して数えます。

select 
devices.name, 
sw_inventory.product, 
products.family_name, 
sw_inventory.ignore_usage, 
NumberOfDuplicates = COUNT(*) 
from sw_inventory 

inner join products 
on sw_inventory.product=products.product_name 

inner join devices 
on sw_inventory.device_name=devices.name 

where sw_inventory.ignore=0 

group by devices.name, products.family_name 

HAVING COUNT(*) > 1 
関連する問題