如:
C_ID C_UID C_Title C_UTime
1 232 test1 2009-10-27 08:38:00
2 232 test2 2009-10-27 08:38:11
3 324 test3 2009-10-27 08:38:22
4 354 test4 2009-10-27 08:38:34
5 256 test5 2009-10-27 08:38:55
......
想的到
C_ID C_UID C_Title C_UTime
5 256 test5 2009-10-27 08:38:55
2 232 test2 2009-10-27 08:38:11
4 354 test4 2009-10-27 08:38:34
......
过滤C_UID重复用户ID。
用 GROUP BY 语句应该怎么写?
如果你是想4个字段都搜出来,那么你的需求逻辑就有问题了,group by 语句使用之后,没有被group by 的字段一定要有聚合函数去约束的,也就是说要有特殊的处理方法,单单group by 一个字段,另三个字段不做操作还想输出的话是要报错的
你的数据是不是有问题,是不是这样的
declare @t table( C_ID int,C_UID int,C_Title varchar(10),C_UTime datetime)
insert @t
select 1,232,'test1','2009-10-27 08:38:00'
union all
select 2,232,'test2','2009-10-27 08:38:11'
union all
select 3,324,'test3','2009-10-27 08:38:22'
union all
select 4,324,'test4','2009-10-27 08:38:34'
union all
select 5,256,'test5','2009-10-27 08:38:55'
select * from @t a where not exists (select 1 from @t where C_UID=a.C_UID and C_UTime>a.C_UTime)
select max(C_ID), C_UID, max(C_Title) , max(C_UTime) from 表名 group by C_UID
只好这样了。
我觉得 select c_ID,c_UID,c_Title,c_UTime from DB group by c_UID ;