首页 > 解决方案 > 从行中选择值较小的行

问题描述

我的问题标题可能令人困惑,但这是我想要做的,我有一个查询:

select * from mytable where days between 1 and 21 

我正在7为此获取记录,在这些记录中,有一个用户有 2 个课程217我正在尝试使用第二个记录作为我的记录,以达到 21 天,以便它可以发送电子邮件。因为这个用户有两个课程,我希望它总是最新的课程被认为忽略第一个课程。

不能使用 group by,因为有些字段不同,不能像ID, teacheretc一样删除

第二种情况是,用户一次只能运行一个类,所以在这种情况下,我的查询工作正常

标签: sqlsql-server

解决方案


在您的数据中,您有两列名称 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

推荐阅读