Я пытаюсь получить «наилучшую» запись из таблицы SQL.
Рассмотрим таблицу, содержащую сериалы:
id, title, эпизод, is_hidef, is_verified
например:
id title ep hidef verified
1 The Simpsons 1 True False
2 The Simpsons 1 True True
3 The Simpsons 1 True True
4 The Simpsons 2 False False
5 The Simpsons 2 True False
Могут быть повторяющиеся строки для одного заголовка и эпизода, которые могут иметь или не иметь разные значения для логических полей. Может быть больше столбцов, содержащих дополнительную информацию, но это неважно.
Мне нужен набор результатов, который дает мне лучшую строку (так что is_hidef и is_verified оба "true", где это возможно) для каждого эпизода. Для строк, которые считаются «равными», я хочу самую последнюю строку (естественное упорядочение или упорядочение по случайному столбцу datetime).
3 The Simpsons 1 True True
5 The Simpsons 2 True False
В прошлом я бы использовал следующий запрос:
SELECT * FROM shows WHERE title='The Simpsons' GROUP BY episode ORDER BY is_hidef, is_verified
Это работает в MySQL и SQLite, но идет вразрез со спецификацией SQL (GROUP BY требует расширений и т. Д. И т. Д.). Мне не очень интересно снова слышать, почему MySQL настолько плох, что позволяет это; но я очень заинтересован в поиске альтернативного решения, которое будет работать и на других движках (бонусные баллы, если вы сможете дать мне код ORM django для него).
Спасибо =)