基于下面名为Course的表格:

enter image description here

如何 Select 课程名称具有最新日期的记录?我的意思是,如果一个ID有两个相同的课程名称,我应该只显示最新的一个作为下面的结果.

简单地说,我只想显示最新的每行("ID","课程名称").

enter image description here

如果我在课程表中有两个日期列,分别是开始日期和结束日期,并且我想仅根据结束日期显示相同的日期,该怎么办?

我正在使用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;

相关答案中的详细信息:

Database相关问答推荐

在MongoDB的树形 struct 中更新具有给定id的元素

删除Postgres中的JSONB列并在不停机的情况下回收空间

如何使用PostgreSQL列出特定数据库的表并按大小排序?

创建一个spell check,判断具有合理运行时间的数据库

数据库术语中的relation关系是什么意思?

SQL 查询至少其中一项

如何识别 DB2 端口号

存储所有排列的模式数据库

SQLite3 的动态类型

怎样有效存储 7.300.000.000 行?

查询表的外键关系

如何将视图的所有权限授予任意用户

使用 jQuery 动态填写表单值

FOR UPDATE和JOIN的 SQL 语义

我应该不断地open()和close() SQL 数据库还是让它保持打开状态?

在 SQL Server 2005 中将数据库从一个驱动器移动到另一个驱动器的正确方法是什么?

如何在 MySQL 中强制执行唯一约束?

将文本列设为唯一键

PHP PDO: error number' 00000' when query is correct

从 SQLAlchemy 中的文件执行 SQL