私はこのようなテーブルを持っています
id color shade date
--- ---- ----- -----
1 red dark 01/01/1990
2 red light 09/16/2013
3 green light 08/15/2010
4 green dark 09/18/2012
5 maroon dark 08/20/2013
6 white dark 08/31/2013
7 white light 08/30/2012
8 purple light 08/20/2010
色ごとに最新の日付のエントリが必要でした。だから私はやってみました:
select id, color, shade, max(date) from mytable;
これは機能せず、エラーが発生しました:
is invalid in the select list because it is not contained in either an aggregate
function or the GROUP BY clause.
わかりましたのでGroup By
、エラーで示唆されているように追加しました
select id, color, shade, max(date) from mutable
Group by id, color, shade
これにより、望ましい結果が得られました。
質問
ここで、特定の色についてのみ上記と同じクエリを繰り返したいと思いました。たとえば、赤と緑のものだけを見たかったのです。
だから私はした:
select id, color, shade, max(date) from mutable
Where color in ('red', 'green')
Group by id, color, shade;
ただし、これらは でグループ化されていると思われるため、正しい数の結果が得られませんshade
。
目的の結果を取得する最良の方法は何ですか? 基本的に、私max date
は同じものの2つのインスタンスのうち、さらにテーブルから特定の色だけが欲しい.