dポイントプレゼントキャンペーン実施中!

各カテゴリ内で最大の番号を持っているものの詳細を表示したいと思っていますが、以下のクエリではエラーがでてしまいます。

SELECT * FROM favorite WHERE no = (SELECT max(no) AS max_no FROM favorite GROUP BY category)

何が悪いのでしょうか?ぜひアドバイスをお願いします。

A 回答 (2件)

select * from favorite f1


where not exists
( select 1
from favorite f2
where f1.category=f2.category
and f1.no<f2.no )
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
実装を止めてしまいました。。

お礼日時:2011/04/07 06:35

単純な話、イコールではなくINを使えばいけます。



SELECT * FROM favorite WHERE no in (SELECT max(no) FROM favorite GROUP BY category)

きちんとやるならcategoryも含めてinで抽出した方がいいかもしれません

SELECT * FROM favorite WHERE (category,no) in (SELECT category,max(no) FROM favorite GROUP BY category)
    • good
    • 0

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