我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 |
我想显示应用程序的名称和最新版本,其中“最新”表示 (a) 最新 release_date,如果有重复,(b) 最高 release_id。
我可以为单个应用程序执行此操作:
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 的方式来做这件事。