sql - 从行中选择值较小的行
问题描述
我的问题标题可能令人困惑,但这是我想要做的,我有一个查询:
select * from mytable where days between 1 and 21
我正在7
为此获取记录,在这些记录中,有一个用户有 2 个课程21
,7
我正在尝试使用第二个记录作为我的记录,以达到 21 天,以便它可以发送电子邮件。因为这个用户有两个课程,我希望它总是最新的课程被认为忽略第一个课程。
不能使用 group by,因为有些字段不同,不能像ID, teacher
etc一样删除
第二种情况是,用户一次只能运行一个类,所以在这种情况下,我的查询工作正常
解决方案
在您的数据中,您有两列名称 ID,我的意思是 ID 允许您确定哪一个是最新的。
此外,您应该有一种方法来识别每个学生,在这种情况下,我使用电子邮件地址,因为多个学生可以有相同的名字。
SELECT *
FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY EmailAddress ORDER BY ID DESC) as rn
FROM yourTable
) as t
WHERE t.rn = 1
推荐阅读
- xamarin.forms - Xamarin Forms 主题源
- python - 如何使用 tensorflow 编写这个函数?
- rest - 如果在发布子资源时资源不存在,则在 REST API 中使用哪个 HTTP 状态代码?
- php - PHP 会话变量在重定向时不可用
- amazon-s3 - 如何恢复在二进制文件中复制的 S3 的本地备份
- c# - 即使安装了 .NET v.4.0,HttpClient 也会导致“System.Net.Http”程序集未找到异常
- javascript - 我的 CSS 动画不起作用
- vba - 确认所选邮件项目在特定文件夹中
- javascript - 图 DFS 运行缓慢
- fortran - Fortran 90:返回错误