Sql 从行中选择值较小的行

Sql 从行中选择值较小的行,sql,sql-server,Sql,Sql Server,我的问题可能令人困惑,但以下是我想做的,我有一个疑问: select * from mytable where days between 1 and 21 我得到了7条记录,在这些记录中,有一个用户有2个类,分别在21和7中,我试图使用第二条记录作为我的记录,以达到21日,这样它就可以发送电子邮件。因为这个用户有两个类,所以我希望它总是最新的类被认为忽略了第一个类 无法使用分组依据,因为有些字段不同,无法删除,如ID、教师等 第二种情况是,用户一次只能运行一个类,因此可能在这种情况下,我的查

我的问题可能令人困惑,但以下是我想做的,我有一个疑问:

select * from mytable where days between 1 and 21 
我得到了7条记录,在这些记录中,有一个用户有2个类,分别在21和7中,我试图使用第二条记录作为我的记录,以达到21日,这样它就可以发送电子邮件。因为这个用户有两个类,所以我希望它总是最新的类被认为忽略了第一个类

无法使用分组依据,因为有些字段不同,无法删除,如ID、教师等


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

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

样本数据和期望的结果确实有助于澄清您想要的内容。如果记录不在1和21之间,为什么要选择该记录?示例数据中的日期字段在哪里?你知道你想要什么吗?你的样品与你的问题毫无关系。你在第7节和第21节上了课。但是你的垃圾桶里没有那样的东西。为什么它要选择您声明它应该选择的行而不是其他行?更新了我的问题并粘贴