私の質問はこれに匹敵しますが、まったく同じではありません。
私は膨大な量の本を含むデータベースを持っており、同じ本のタイトルのいくつかの異なる版があります。WHERE 句 (特定の書籍シリーズを検索するため) で選択している各タイトルの最高の版数を示す SQL ステートメントを探しています。テーブルは次のようになります。
|id|title |edition|year|
|--|-------------------------|-------|----|
|01|Serie One Title One |1 |2007|
|02|Serie One Title One |2 |2008|
|03|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|05|Serie One Title Three |1 |2008|
|06|Serie One Title Three |2 |2009|
|07|Serie One Title Three |3 |2010|
|08|Serie One Title Three |4 |2011|
|--|-------------------------|-------|----|
私が探している結果はこれです:
|id|title |edition|year|
|--|-------------------------|-------|----|
|03|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|08|Serie One Title Three |4 |2011|
|--|-------------------------|-------|----|
私が得た最も近いものは、このステートメントを使用することでした:
select id, title, max(edition), max(year) from books where title like "serie one%" group by title;
ただし、最高の版と年を返し、最初に見つかった ID を含めます。
|--|-----------------------|-------|----|
|01|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|05|Serie One Title Three |4 |2011|
|--|-----------------------|-------|----|
この派手な結合も近いですが、正しい結果は得られません。
select b.id, b.title, b.edition, b.year from books b inner join (select name, max(edition) as maxedition from books group by title) g on b.edition = g.maxedition where b.title like "serie one%" group by title;
これを使用して、独自のタイトルを取得していますが、ほとんどが古い版です。