- ベストアンサー
重複を除いた結果が欲しい
重複を除いた結果が欲しいのですが、 DISTINCTだと取得する全てのカラムの内容が一致すると重複と言う扱いになってしまいます。 複数のカラムデータを取得する場合でも、指定したカラムデータが重複したら除くようにしたいのですが、スマートな構文はないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
それはグループ化です。但し、「指定したカラム」以外のフィールドの 扱いをどうするか考えておく必要があります。最大値、最小値、平均値、 合計、カウント、・・・など SELECT 指定カラム1,指定カラム2,MAX(指定外カラム1),・・・ FROM テーブル GROUP BY 指定カラム1,指定カラム2
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
具体的なアドバイスを得たいなら、もっと具体的な内容を提示してください。どういう母体データから、どういう結果を得たいのでしょうか? また、MySQLならMySQL 4.0以前と4.1以降で、サブクエリの実装など大きな機能差がありますから、バージョンも明記してください。
お礼
ご回答ありがとうございます。 +---+--------+--------+ | id | namae | myouji | +---+--------+--------+ | 1 | タロウ | スズキ | +---+--------+--------+ | 2 | ハナコ | スズキ | +---+--------+--------+ | 3 | タロウ | サトウ | +---+--------+--------+ 上記のレコードを、“~ ORDER BY id”で実行して、 id1のレコードのみが取得できれば成功です。 (id2は、myoujiが重複したので除く) (id3は、namaeが重複したので除く) MySQL5.0です。 サブクエリを使わないで実現できますでしょうか?
お礼
ご回答ありがとうございます。 “GROUP BY 指定カラム1,指定カラム2”だと、 指定カラム1は重複しないと思いますが、指定カラム1が違えば指定カラム2は重複してしまうと思うのです。 ご意見、参考にさせて頂きました、ありがとうございます。