以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  查询唯一值  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=115708)

--  作者:良才
--  发布时间:2018/3/13 8:27:00
--  查询唯一值
S elect top 1 学生编号,学生姓名 From {缴退费信息} GROUP BY 学生编号,学生姓名 ORDER BY 缴费日期 DESC
这样只能查询一个学生,查询所有学生最后一次缴费记录,请老师指教,谢谢
[此贴子已经被作者于2018/3/13 11:37:34编辑过]

--  作者:有点甜
--  发布时间:2018/3/13 8:36:00
--  

如果是sqlserver数据库,可以用 row_number 函数,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=113873&skin=0

 


--  作者:良才
--  发布时间:2018/3/19 10:17:00
--  
老师我是Access数据库
--  作者:有点甜
--  发布时间:2018/3/19 10:45:00
--  
以下是引用良才在2018/3/19 10:17:00的发言:
老师我是Access数据库

 

同样,可以参考 http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=113873&skin=0

 


--  作者:良才
--  发布时间:2018/3/19 11:04:00
--  
是这样吧!
S elect  Max(缴费日期) As 缴费日期,学生编号 From {学生缴费}  GROUP BY 学生编号

--  作者:有点甜
--  发布时间:2018/3/19 11:18:00
--  

如果要获取整条记录,参考做法

 

https://www.cnblogs.com/netserver/p/4518995.html

 

https://www.cnblogs.com/isun/archive/2012/12/22/2829528.html

 

[此贴子已经被作者于2018/3/19 11:18:31编辑过]

--  作者:良才
--  发布时间:2018/3/19 15:02:00
--  
s elect a.* from (S elect 学生编号,学期,Count(学生编号) as 数量 from {缴退费信息} group by 学生编号,学期) as a where 1 > (s elect count(*) from (S elect 学生编号,学期,Count(学生编号) as 数量 from {缴退费信息} group by 学生编号,学期) as b where b.学生编号 = a.学生编号 and b.数量 > a.数量 ) order by a.学生编号, a.数量
这样太慢

--  作者:有点甜
--  发布时间:2018/3/19 15:11:00
--  

改成这样

 

select * from {缴退费信息} as a inner join (Select 学生编号, max(缴费日期) As 最后日期 From {缴退费信息} GROUP BY 学生编号) as b on a.学生编号=b.学生编号 and a.缴费日期=b.最后日期


--  作者:良才
--  发布时间:2018/3/19 15:21:00
--  
s elect a.* from {缴退费信息} a,(s elect 学生编号,max(缴费日期) As 缴费日期 from {缴退费信息} group by 学生编号) b where a.学生编号 = b.学生编号 and a.缴费日期 = b.缴费日期 order by a.学生编号
--  作者:良才
--  发布时间:2018/3/19 15:22:00
--  
谢谢,老师