求一存储过程

cupsBing 2011-11-16 10:16:16
表:News(id,title,contents,cid)

已知cid in (1,2,3)

如何根据cid里面的id,各查找出10条信息,就是cid =1 的10条,cid =2 的10条,cid=3的10条,以此类推

最好是合理一点,性能好一点,News表里面数据很多,不要使用select *,一下子查找出所有信息,然后在过滤,最好是select top N ,这个N根据cid里面id的个数来,例如cid里面id有3个,那么建议select top 90 ,这个前面90条信息,我会在程序里面考虑,这个70条肯定是1有10条,2有10条,3有10条的


这个top N ,N可以这样吧 N = cid.items.count * 3(不知道应该怎么计算cid里面的个数,随便写的,大手们都懂得)
...全文
101 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cupsbing 的回复:]
上面这3家都能得到每个类别都有10条信息,但是不知道哪家的性能好一点,希望前辈们给一个建议
[/Quote]
我个人认为(你可以自己测试):

select t.* from news t where id in (select top 10 id from news where cid = t.cid order by id)

select t.* from news t where id in (select top 10 id from news where cid = t.cid order by id desc)
cupsBing 2011-11-16
  • 打赏
  • 举报
回复
上面这3家都能得到每个类别都有10条信息,但是不知道哪家的性能好一点,希望前辈们给一个建议
dawugui 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cupsbing 的回复:]
这个能得到总共30条数据吗(cid=1 ,10条.....)
[/Quote]
如果每个CID都至少有10条数据以上,则能得到30条,否则则不能.
--小F-- 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cupsbing 的回复:]
引用 2 楼 fredrickhu 的回复:

SQL code
--意思是分组求前10吧

select
distinct b.*
from
news a
cross apply
(select top 10 * from news where cid=a.cid order by id )b



这个能得到总共30条数据吗(cid=1 ,10条.....)
[/Quote]
可以。
cupsBing 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]

SQL code
--意思是分组求前10吧

select
distinct b.*
from
news a
cross apply
(select top 10 * from news where cid=a.cid order by id )b
[/Quote]


这个能得到总共30条数据吗(cid=1 ,10条.....)
dawugui 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dawugui 的回复:]
select t.* from news t where cid in (select top 10 cid from news where id = t.id order by cid)

select t.* from news t where cid in (select top 10 cid from news where id = t.id order by cid desc)
[/Quote]貌似写反了,更改为如下:
select t.* from news t where id in (select top 10 id from news where cid = t.cid order by id)

select t.* from news t where id in (select top 10 id from news where cid = t.cid order by id desc)
dawugui 2011-11-16
  • 打赏
  • 举报
回复
select t.* from news t where cid in (select top 10 cid from news where id = t.id order by cid)

select t.* from news t where cid in (select top 10 cid from news where id = t.id order by cid desc)
中国风 2011-11-16
  • 打赏
  • 举报
回复
改改
SELECT *
FROM (select *,NTILE(10)OVER(PARTITION BY CID ORDER BY ID) AS NT from News where ','+@Cid+',' like '%,'+rtrim(ID)+',%')t
WHERE NT<10
中国风 2011-11-16
  • 打赏
  • 举报
回复
查每個CID是90%的數據?
code=SQL]SELECT *
FROM (select *,NTILE(10)OVER(PARTITION BY CID ORDER BY ID) AS NT from News where ','+@Cid+',' like '%,'+rtrim(ID)+',%')t
WHERE T<10[/code]
--小F-- 2011-11-16
  • 打赏
  • 举报
回复
2楼得到的是全部cid的 你要求哪些CID的自己去处理下。
--小F-- 2011-11-16
  • 打赏
  • 举报
回复
--意思是分组求前10吧

select
distinct b.*
from
news a
cross apply
(select top 10 * from news where cid=a.cid order by id )b
中国风 2011-11-16
  • 打赏
  • 举报
回复
建議拆分再比較
zhangguofeng123 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
SQL code

--意思是分组求前10吧

select
distinct b.*
from
news a
cross apply
(select top 10 * from news where cid=a.cid order by id )b
[/Quote]
顶!
cupsBing 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dawugui 的回复:]

引用 11 楼 cupsbing 的回复:
上面这3家都能得到每个类别都有10条信息,但是不知道哪家的性能好一点,希望前辈们给一个建议

我个人认为(你可以自己测试):

select t.* from news t where id in (select top 10 id from news where cid = t.cid order by id)

select t.* ……
[/Quote]


哈哈,好吧, 既然前辈你不谦虚,那么就用这个吧
大家这么喜欢,我就不要资源分了,改成0分了,我为我一己私利感到抱歉…… MongoDB学习手册 ......................................................................................................................... 1 说明.......................................................................................................................................... 2 一、 Mongodb简介 .......................................................................................................... 4 二、 MongoDB特性 ......................................................................................................... 5 适用场景: ....................................................................................................................... 5 不适用场景: ................................................................................................................... 6 三、 MongoDB的工作方式.............................................................................................. 6 四、 MongoDB的下载 ..................................................................................................... 8 五、 MongoDB的安装 ..................................................................................................... 9 六、 MongoDB数据类型................................................................................................ 12 1. Timestamp类型 ...................................................................................................... 12 2. ObjectId类型 .......................................................................................................... 12 3. 数据库关联 ............................................................................................................. 14 七、 GridFS文件系统 ..................................................................................................... 15 八、 索引 ......................................................................................................................... 16 九、 主(Master)/从(slave)数据库同步 ................................................................ 20 1. 建立主/从服务器 ................................................................................................... 20 2. 相关参数说明 ......................................................................................................... 21 3. Slave顶替Master ................................................................................................... 22 4. 切换Master/Slave角色 ......................................................................................... 22 5. 更新主服务器位置 ................................................................................................. 22 十、 MongoDB分片和集群............................................................................................ 24 1. 简单分片实例 ......................................................................................................... 24 2. 高级分片实例 ......................................................................................................... 29 十一、 数据库基本操作:增查删改 ............................................................................. 37 1. Insert ....................................................................................................................... 37 2. Query ....................................................................................................................... 38 3. Remove.................................................................................................................... 52 4. Update ..................................................................................................................... 53 十二、 Shell控制台 ........................................................................................................ 62 1. 执行.js文件 ............................................................................................................ 62 2. –eval ........................................................................................................................ 62 3. 脚本和互动的区别 ................................................................................................. 62 十三、 安全与认证 ......................................................................................................... 63 1) 开启安全认证 ......................................................................................................... 63 2) 添加用户 ................................................................................................................. 64 3) 认证 ......................................................................................................................... 64

22,298

社区成员

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

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