紧急求助,关于SQL的查询

丢弃记忆 2008-06-24 10:12:59
我现在急需一条这样的SQL,请各位大哥,帮帮忙:
查询一批数据,表名为ch_news,要求根据时间段查询,比如,要查询一个月内的前10条记录,如果没有10条再将相近的记录补充,
详细点就是,如果30天的数据只有6条,再自动补充4条记录.一定要有10条记录.
请问,这个SQL怎么写>?
...全文
69 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nnily1984 2008-06-24
  • 打赏
  • 举报
回复
向后30天取的数据应该也是按照30天为一个周期来计算的吧??
weinaxxc 2008-06-24
  • 打赏
  • 举报
回复

use [yourdatabase]
select * into #tb1 from ch_news where times>=DATEADD(day, - 30, GETDATE()) order by hits desc
select * into #tb2 from ch_news where times<DATEADD(day, - 30, GETDATE()) order by hits desc
select top 10 * from ((select * from #tb1) union all (select * from #tb2))tb
drop table #tb1,#tb2


这样应该可以吧!测试下看看!
丢弃记忆 2008-06-24
  • 打赏
  • 举报
回复
不好意思,可能有点着急了,没说清楚了
表为ch_news,查询的条件为
(times-添加时间,hits-点击率)
1.首先返回10条30天内的记录,根据hits排序
2.如果记录数不足10条,再根据点击率自动补充以达到10条记录.
pt1314917 2008-06-24
  • 打赏
  • 举报
回复

--哦,忘记条件了。
select top 10 * from ch_news where 日期 between 时间段1 and 时间段2 order by 时间 desc

pt1314917 2008-06-24
  • 打赏
  • 举报
回复

--楼主可以换个思考方法,就是按照时间倒序排列,取前10条。其实跟你想要的结果是一样的。不过做法就简单的多。
select top 10 * from ch_news order by 时间 desc
weinaxxc 2008-06-24
  • 打赏
  • 举报
回复
你没说清楚啊,你目前描述的先按时间排序,选择TOP 10就行了!

select top 10 yourcol from ch_news order by date desc
zhgwbzhd 2008-06-24
  • 打赏
  • 举报
回复
这个是不是还要先写一个循环啊。
判断记录的条数。再读取啊。
丢弃记忆 2008-06-24
  • 打赏
  • 举报
回复
各位大虾,帮帮忙
急,在线等

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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