本来以为会很简单,结果居然做不出来,求sql语句。

ruhong1 2016-08-23 02:56:02
需求很简单。
表a

id 内容 录入日期
1 a 2011.1.1
2 b 2011.1.2
3 a 2011.1.3
4 c 2011.1.4

输出结果就是

内容
c
a
b

就是列的去掉重复内容,按最新录入的时间排序,而且只取前5条,就是记录用户录入的信息,提供最后录入的不重复的5条给他选择。
可sql 居然不支持在group 中用order by ,怎么办?
...全文
585 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruhong1 2016-08-25
  • 打赏
  • 举报
回复
好多大神啊,谢谢。
卖水果的net 版主 2016-08-24
  • 打赏
  • 举报
回复
引用 6 楼 wwfxgm 的回复:
roy_88版主使用offset fetch first方法,这个能否性能上面超越TOP ?
会的,这个新功能,就是为了做分页; 在语法上,在性能上都要超越 TOP N 和 row_number
wwfxgm 2016-08-24
  • 打赏
  • 举报
回复
roy_88版主使用offset fetch first方法,这个能否性能上面超越TOP ?
中国风 2016-08-23
  • 打赏
  • 举报
回复
SQL2012可以方法,之前的版本用楼上的方法 --过滤重复 内容

;WITH CTE(id,内容,录入日期)
AS
(
select 1,N'a','2011.1.1' union all
select 2,N'b','2011.1.2' union all
select 3,N'a','2011.1.3' union all
select 4,N'c','2011.1.4'
)
SELECT 内容 FROM CTE GROUP BY 内容 ORDER BY MAX(录入日期) DESC  OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY

中国风 2016-08-23
  • 打赏
  • 举报
回复
;WITH CTE(id,内容,录入日期)
AS
(
select 1,N'a','2011.1.1' union all
select 2,N'b','2011.1.2' union all
select 3,N'a','2011.1.3' union all
select 4,N'c','2011.1.4'
)
SELECT 内容  FROM CTE ORDER BY CTE.录入日期 DESC OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY
Ginnnnnnnn 2016-08-23
  • 打赏
  • 举报
回复
;WITH CTE AS
(
	SELECT 1 AS id ,'a' AS 内容,'2011-01-01' AS 录入日期 UNION ALL
	SELECT 2 AS id ,'b' AS 内容,'2011-01-02' AS 录入日期 UNION ALL
	SELECT 3 AS id ,'a' AS 内容,'2011-01-03' AS 录入日期 UNION ALL
	SELECT 4 AS id ,'c' AS 内容,'2011-01-04' AS 录入日期 
)
SELECT TOP 5 内容
	FROM CTE
	GROUP BY CTE.内容
	ORDER BY MAX(录入日期) DESC
唐诗三百首 2016-08-23
  • 打赏
  • 举报
回复

select top 5 t.内容
 from (select 内容,
              录入日期=max(录入日期)
        from 表a
        group by 内容) t
 order by t.录入日期 desc
卖水果的net 版主 2016-08-23
  • 打赏
  • 举报
回复

create table test(id int, c varchar(10), rq varchar(10))
insert into test values
(1, 'a', '2011.1.1'),
(2, 'b', '2011.1.2'),
(3, 'a', '2011.1.3'),
(4, 'c', '2011.1.4')
go
with m as (
    select row_number() over(partition by c order by rq desc) rn , *
    from test 
)
select top 5 id, c, rq from m where rn = 1 order by rq desc 
go
drop table test 
go


(4 行受影响)
id          c          rq
----------- ---------- ----------
4           c          2011.1.4
3           a          2011.1.3
2           b          2011.1.2

(3 行受影响)


34,577

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧