У меня есть эта releases
таблица в базе данных SQLite3, в которой перечислены все выпущенные версии приложения:
|release_id|release_date|app_id|
|==========|============|======|
| 1001| 2009-01-01 | 1|
| 1003| 2009-01-01 | 1|
| 1004| 2009-02-02 | 2|
| 1005| 2009-01-15 | 1|
Так что для каждого app_id будет несколько строк. У меня есть другой стол, apps
:
|app_id|name |
|======|========|
| 1|Everest |
| 2|Fuji |
Я хочу отобразить название приложения и новейшую версию, где «самая новая» означает (а) новейшую дату выпуска и, если есть дубликаты, (б) наивысший идентификатор выпуска.
Я могу сделать это для индивидуального применения:
SELECT apps.name,releases.release_id,releases.release_date
FROM apps
INNER JOIN releases
ON apps.app_id = releases.app_id
WHERE releases.release_id = 1003
ORDER BY releases.release_date,releases.release_id
LIMIT 1
но, конечно, ORDER BY применяется ко всему запросу SELECT, и если я пропущу предложение WHERE, он по-прежнему возвращает только одну строку.
Это однократный запрос для небольшой базы данных, поэтому медленные запросы, временные таблицы и т. Д. В порядке - я просто не могу разобраться, как это сделать на SQL.