ショボ短歌会

id     field1     field2
1      1        A
2      1        A
3      1        B
4      2        A
5      2        B
6      2        C
7      3        D
8      3        D
9      3        D


field1とfield2の値が他のレコードのfield1とfield2と重複している場合はひとつのデータとして返したいです。

id1.2はfield1とfield2の値が同じなので、ひとつのデータしか返しませんが、id3はfield2が異なるので返します。
id4.5.6はいずれもfield2の値が異なるので4.5.6全てを返します。
id7.8.9はfield1とfield2が同じ値なのでひとつのデータしか返しません。


id
1
3
4
5
6
7

該当するレコードは上記のように6個となるようにするにはどのようなsql文を発行すれば良いでしょうか?
ご教示頂けますと幸いです。
宜しくお願い致します。

A 回答 (3件)

これでいかがでしょうか。



SELECT
id
FROM
(
SELECT
min( id ) as id
, field1
, field2
FROM
tables
GROUP BY
field1
, field2
ORDER BY
id
) AS result

みればわかるかと思いますがminをmaxにすれば同一項目内の最大のIDで持ってきます。
    • good
    • 0

idだけを拾うならこれで十分



select min(id) as id from tb group by field1,field2;
    • good
    • 0
この回答へのお礼

皆さん、回等ありがとうございました。
とても参考になりました。

お礼日時:2013/02/23 10:57

select id from tb t1


where id=(select min(id) from tb t2
where t1.fild1=t2.fild1 and t1.fild2=t2.fild2)
でどうでしょうか。
    • good
    • 0

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

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