基于下面名为Course
的表格:
如何 Select 课程名称具有最新日期的记录?我的意思是,如果一个ID有两个相同的课程名称,我应该只显示最新的一个作为下面的结果.
简单地说,我只想显示最新的每行("ID","课程名称").
如果我在课程表中有两个日期列,分别是开始日期和结束日期,并且我想仅根据结束日期显示相同的日期,该怎么办?
我正在使用PostgreSQL.
基于下面名为Course
的表格:
如何 Select 课程名称具有最新日期的记录?我的意思是,如果一个ID有两个相同的课程名称,我应该只显示最新的一个作为下面的结果.
简单地说,我只想显示最新的每行("ID","课程名称").
如果我在课程表中有两个日期列,分别是开始日期和结束日期,并且我想仅根据结束日期显示相同的日期,该怎么办?
我正在使用PostgreSQL.
在PostgreSQL中,要获得unique rows for a defined set of columns,最好的技术通常是DISTINCT ON
:
SELECT DISTINCT ON ("ID") *
FROM "Course"
ORDER BY "ID", "Course Date" DESC NULLS LAST, "Course Name";
假设您实际使用的是带有空格的那些不合适的大写标识符.
这样你每ID
人就能得到exactly one row英镑--最新的"Course Date"
英镑和前"Course Name"
英镑(根据排序顺序),以防在日期上打成平手.
如果列定义为NOT NULL
,则可以删除NULLS LAST
.
要获取每("ID", "Course Name")
行的唯一行,请执行以下操作:
SELECT DISTINCT ON ("ID", "Course Name") *
FROM "Course"
ORDER BY "ID", "Course Name", "Course Date" DESC NULLS LAST;
相关答案中的详细信息: