我有一个包含 2 个表的 SQLite 数据库:album和photo. 相册,基本上只是照片的集合,由photo. 每张照片都有 3 个时间戳:创建、更新、删除。
sqlite> SELECT id, title FROM album;
id title
---------- ----------------
1 Beach party 2018
2 Dad's 60th birth
sqlite> SELECT id, album, ts_created, ts_updated, ts_deleted FROM photo;
id album ts_created ts_updated ts_deleted
---------- ---------- ---------- ---------- ----------
1 1 1538649250 1538649274
2 1 1538649250 1538649261
3 1 1538649250
4 1 1538649250 1538649267
5 1 1538649250 1538649267
6 2 1538649962
7 2 1538649962
Run Code Online (Sandbox Code Playgroud)
在应用程序中显示相册时,我想显示标题,以及最后一张照片“事件”(添加、编辑、删除等)的日期,例如
海滩派对 2018
编辑于:UTC 2018 年 10 月 4 日星期四 10:34:34
如何从photo表中的时间戳中获取此信息?
使用max内置函数在这里有所帮助。从文档:
请注意,当 max() 有 2 个或更多参数时,它是一个简单的函数,但如果只给出一个参数,则它作为聚合函数运行。
另请注意,由于我们的时间戳可以为 NULL,并且max如果任何值为 NULL 则返回 NULL,因此我们需要使用coalesceNULL 列来确保 NULL 列不会破坏外部max.
SELECT album.id,
album.title,
max(
max(coalesce(photo.ts_created, 0)),
max(coalesce(photo.ts_updated, 0)),
max(coalesce(photo.ts_deleted, 0))
) AS ts_content
FROM album,
photo
WHERE album.id = photo.album
GROUP BY album.id;
id title ts_content
---------- ---------------- ----------
1 Beach party 2018 1538649274
2 Dad's 60th birth 1538649962
Run Code Online (Sandbox Code Playgroud)