アプリ版:「スタンプのみでお礼する」機能のリリースについて

環境はmysql5.2です。

例えば以下のようなテーブルがある時
pref   city  town
----------------
東京  港区  A町
東京  南区  C町
大阪  北区  D町
大阪  北区  E町
愛知  南区  F町
愛知  南区  G町

prefのみが重複しないように、全てのカラムを取得しようと思っているのですが、
select distinct pref, city, town …
とすると当然全て取得されます
また、
select disitinct pref …
とするとたしかにprefは重複せずにすむのですが、cityとtownを取得することが出来ません。

どのようにすればprefだけは重複させずに全てのカラムを取得することが出来るのでしょうか。
ご存じの方がいらっしゃればご教授お願いします。

A 回答 (3件)

IDの最小値をとるなら簡単な話で




select pref,city,town FROM テーブル
WHERE id IN(SELECT min(id) FROM テーブル GROUP BY pref)
    • good
    • 18

mysql 5.1.54 で確認しましたが


select *
from tbl t1
where not exists
( select 1 from tbl t2
where t1.pref=t2.pref
and ( t1.city, t1.town ) > ( t2.city, t2.town ) );

と書けるようです。
    • good
    • 4

>prefだけは重複させずに全てのカラムを取得する



今回の例で言えば具体的にどういう結果ならよいのでしょうか?
group by してgroup_concatしたいのかな?

この回答への補足

すみません説明が不足していました。
この場合は

pref   city  town
----------------
東京  港区  A町
東京  南区  C町
大阪  北区  D町
大阪  北区  E町
愛知  南区  F町
愛知  南区  G町

からprefでdistinctして、prefが同じものがある場合、IDが一番小さい物だけを取得したいということです。つまり以下の結果を期待します。

東京  港区  A町
大阪  北区  D町
愛知  南区  F町

説明不足ですみませんでした

補足日時:2011/07/02 19:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A