如何在SQLite中获取多列的最大值?

3

我有一个包含2个表的SQLite数据库:albumphoto。相册基本上只是照片的集合,由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

在应用程序中显示相册时,我想显示标题以及上一张照片“事件”(添加、编辑、删除等)的日期,例如:

海滩派对2018

编辑于:2018年10月4日 上午10:34:34 UTC

我如何从photo表中的时间戳获取此信息?

1个回答

6
使用内置函数max可以帮助解决问题。根据文档

请注意,当max()有两个或更多参数时,它是一个简单的函数,但如果只给定一个参数,则作为聚合函数运行。

此外,请注意,由于我们的时间戳可以为NULL,并且max返回NULL如果任何值为NULL,我们需要使用coalesce来确保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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接