我的問題與this one相當,但不完全相同。MySQL:當WHERE發現類似條目時,選擇最高列值
我有一個擁有大量書籍的數據庫,其中一些書籍的版本不同。我正在尋找一個SQL語句,它給了我用WHERE子句選擇的每個標題的最高版本號(以查找特定的書籍系列)。下面是桌子的樣子:
|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|
|--|-------------------------|-------|----|
我要找的結果是這樣的:
select id, title, max(edition), max(year) from books where title like "serie one%" group by title;
但它返回:
|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|
|--|-------------------------|-------|----|
我就是用這個說法最接近包括找到的第一個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;
使用此我得到獨特的頭銜,但大多是舊版本。
選擇b.id,b.title,b.edition,從書本b b.year其中b.edition =(從書籍b2中選擇max(b2.edition),其中b2.title = b.title) – wxyz
+1 @wxyz:你爲什麼不把它作爲答案? – mpe
輝煌!正是我在找什麼。 – Ack