举个例子:共100家公司,每个公司发布了5条信息,共500条。要求搜索信息结果排序——
先按照公司名排序,要求先列出不同公司发布时间最新的那条信息,也就是前100条肯定是不同公司发布的最新的那条。从第101条开始,按发布时间排序,也就是每个公司发布的其余4条(总400条)从第101开始按时间排。 求高手!
先按照公司名排序,要求先列出不同公司发布时间最新的那条信息,也就是前100条肯定是不同公司发布的最新的那条。从第101条开始,按发布时间排序,也就是每个公司发布的其余4条(总400条)从第101开始按时间排。 求高手!
解决方案 »
- sql server 中的标量函数有哪些?
- sql 2005 中 bcp 语法报错 :用户’sa'登陆失败,原因:未与信任SQLserver 连接相关联
- 帮忙看一个存储过程,为什么提示 必须声明变量 '@classid'
- 急!查询分析器执行sql脚本的问题!
- 如何编写 检索一条“后10条记录” 的SQL?
- 一张表 存储到一定数据他会翻页存储吗,这个一定量是多少?
- 求:查询数据库里所有表的sql语句!
- 求助.怎么定义一个储存大字段内容
- sql server2000 与 sql server 2005 同存问题
- 求一高效的SQL語句或存儲過程實現
- 按批次更新 SQL 语句
- bcp 命令中 FIRE_TRIGGERS 和 CHECK_CONSTRAINTS 到底怎么用,用bcp能否自动路过键重复的记录
union all
select m.* , type = 1 from tb m where not exists (select 1 from (select t.* , type = 0 from tb t where 时间字段 = (select max(时间字段) from tb where 公司名 = t.公司名)) n where n.公司名 = m.公司名 and n.时间字段 = m.时间字段)
order by
type,
(case type when 0 then 公司名 else null end),
(case type when 1 then 时间字段 else null end)
insert into tb values('a' , '2008-01-01' , 'a1')
insert into tb values('a' , '2008-01-02' , 'a2')
insert into tb values('a' , '2008-01-03' , 'a3')
insert into tb values('a' , '2008-01-04' , 'a4')
insert into tb values('a' , '2008-01-05' , 'a5')
insert into tb values('b' , '2008-01-06' , 'b1')
insert into tb values('b' , '2008-01-07' , 'b2')
insert into tb values('b' , '2008-01-08' , 'b3')
insert into tb values('b' , '2008-01-09' , 'b4')
insert into tb values('b' , '2008-01-10' , 'b5')
goselect name , dt , title from
(
select t.* , type = 0 from tb t where dt = (select max(dt) from tb where name = t.name)
union all
select m.* , type = 1 from tb m where not exists (select 1 from (select t.* , type = 0 from tb t where dt = (select max(dt) from tb where name = t.name)) n where n.name = m.name and n.dt = m.dt)
) t
order by type,
(case type when 0 then name else null end),
(case type when 1 then dt else null end)drop table tb/*
name dt title
---------- ------------------------------------------------------ ----------
a 2008-01-05 00:00:00.000 a5
b 2008-01-10 00:00:00.000 b5
a 2008-01-01 00:00:00.000 a1
a 2008-01-02 00:00:00.000 a2
a 2008-01-03 00:00:00.000 a3
a 2008-01-04 00:00:00.000 a4
b 2008-01-06 00:00:00.000 b1
b 2008-01-07 00:00:00.000 b2
b 2008-01-08 00:00:00.000 b3
b 2008-01-09 00:00:00.000 b4(所影响的行数为 10 行)
*/