首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

*实在没有分了,小小的查询有关问题*

2012-01-30 
******实在没有分了,小小的查询问题*******我想从一个表里根据关键字(querytext)查询出来相关的记录,如果

******实在没有分了,小小的查询问题*******
我想从一个表里根据关键字(querytext)查询出来相关的记录,如果查询出来记录不够5条,就用这个新闻类型(infoflag   )的最新录入的给拿出来补够5条,怎么做呢?
表结构
id         name       querytext     infoflag           inputtime
序号     名字       关键字             新闻类型           录入时间


[解决办法]
select top 5 * from
(
select * from tb where querytext = '关键字 '
union all
select top 5 * from tb order by inputtime desc
) t
[解决办法]
--添加辅助列,确保,如果=关键字的够5条,一定先取这5条,否则,取完这几条后,再按时间倒排序获取数据
--不要用union all,因为可能不满足5条时,刚好也是最近输入的,可能会显示重复行

select top 5 *
from
(
select *,1 as ID from tb where querytext = '关键字 '
union
select top 5 *,2 as id from tb order by inputtime desc
) t
order by id,inputtime desc

[解决办法]
--添加辅助列,确保,如果=关键字的够5条,一定先取这5条,否则,取完这几条后,再按时间倒排序获取数据
--不要用union all,因为可能不满足5条时,刚好也是最近输入的,可能会显示重复行


楼上说的不错

不过UNION 本身就会去重复行,只要不用UNION ALL 而且选TOP 10 就好了
select top 5 *
from
(
select * from tb where querytext = '关键字 '
union
select top 10 * as id from tb order by inputtime desc
) t
order by id,inputtime desc

热点排行