sql查询100个栏目的前100个文章
有这样一个问题:有100个栏目,要查出每个栏目的前100篇文章id,就是一共要查100x100=10000个id
怎么做呢?
我以前是手工的,不怕笑话,sql不太懂,我怎么做:
select top 100 articleid from table where classid=1
查一次把结果记下来,然后再查select top 100 articleid from table where classid=2 再把结果记下来 然后继续 查100次 把100次的结果串起来
以前栏目不多的时候我就是这样做的,现在栏目多,快到100了,手工实在不行,要想办法了。到处找资料,到处问人,嘿,还真给我搞了几套方案。
1、union all
select top 100 articleid from table where classid=1
union all
select top 100 articleid from table where classid=2
union all
select top 100 articleid from table where classid=3
union all
...
select top 100 articleid from table where classid=100
一次? 哈哈不行 太多了 查询分析报错 试了好多次都不能一次搞定 要分2次 从1-50 51-100 或者其他 反正要分隔成两次查 就不会报错。
2、利用循环
declare @i int
set @i=1
while @i<100begin
select top 100 articleid from table
where classid=@i
set @i=@i+1
end
这个可以一次查出来 但是结果显示非常不爽 全部是显示在一个框框一个框框里面 查一次就是一个结果框 没办法把结果全部copy出来
3、目前来看最好的方法
select articleid from table a
where articleid in (
select top 100 articleid from table
where classid=a.classid)
很简单就搞定了 牛人告诉我的 我看了半天不知道怎么理解 哈哈 没学过是菜鸟 大致意思就是查询一个articleid 判断它是不是在这个classid的前100个articleid里面 是就记录然后继续判断下一个articleid
4、我提出把方案2的思路改进 首先查一次top100 把得到的数据插入一个临时表 然后进行下一步查询下一个top100 把结果插入到刚才的临时表 然后继续 循环 最后把临时表的结果输出
可惜了我用的access数据库 临时表要用到存储过程 而access不支持 这个方案没搞到 哈哈 还有高人还帮我搞搞没有?
- 相关文章
- ACCESS中使用select top 出现的问题 - 2006-11-23
- access采用sql语句与sql的区别 - 2006-05-16
- 上一篇:从360安全卫士情人节定制版看奇虎的推广策略
- 下一篇:动易动态标签生成随机文章列表











