手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆

一句SQL:取得相同sortid的结果集,每种 ID三条数据

首页 > DataBase >
本文来源:http://www.metrodub.com/a/www.globalsurvey.com.cn/

重庆时时彩定胆 www.metrodub.com,  业内专家建议,今年国家应继续出台相关政策,降低准入门槛,引入更多愿意承担高风险并有能力通过处置不良贷款获得高收益的机构,可以支持机构综合运用债转股、重组并购顾问、股权投资等方式处置不良资产。  经济观察报此前获得的恒大地产路演材料显示,若恒大地产在上市前未实现每年的业绩承诺,恒大地产每年进行现金分红时对战略投资者的分红比例将根据恒大地产业绩实现情况进行调整,保证投资者的收益。


一个表:

SQL代码
  1. CREATE TABLE `book` (   
  2.   `bookid` int(11) unsigned NOT NULL AUTO_INCREMENT,  
  3.   `sortid` int(11) NOT NULL,  
  4.   `bookname` varchar(255) NOT NULL DEFAULT '',  
  5.   PRIMARY KEY (`bookid`)  
  6. ) ENGINE=InnoDB AUTO_INCREMENT=80729 DEFAULT CHARSET=utf8;  

数据是这样的:

XML/HTML代码
  1. insert  into `book`(`bookid`,`sortid`,`bookname`) values (1,1,'1'),(2,1,'2'),(3,1,'3'),(4,1,'4'),(5,2,'1'),(6,2,'2'),(7,2,'3'),(8,2,'4'),(9,2,'5'),(10,2,'6'),(11,2,'7'),(12,2,'8'),(13,2,'9'),(14,2,'10'),(15,2,'11'),(16,3,'1'),(17,3,'2'),(18,3,'3'),(19,3,'4'),(20,3,'5'),(21,3,'6'),(22,3,'7'),(23,3,'8'),(24,3,'9'),(25,3,'10'),(26,3,'11'),(27,3,'12'),(28,4,'1'),(29,4,'2'),(30,4,'3'),(31,4,'4'),(32,4,'5'),(33,5,'1'),(34,5,'2'),(35,5,'3'),(36,5,'4');  

在这种情况下,要取得 sortid IN (1,2,3)的数据,每个sortid的结果是3条。
这种题目网上很多,但真的没有一种特别好SQL,在网上有很多种。最初的时候,我自己是想着用union来处理,但最终这种方法太伤了,同事clear提出的SQL不错,试了一下,在几万条数据的时候,效率还可以,而且SQL相对简单:

SQL代码
  1. SELECT sortid,bookname FROM book b WHERE sortid IN(1,2) AND 3>(SELECT COUNT(1) FROM book WHERE b.sortid=sortid AND bookid<b.bookid)   

表自关联,在sortid上建索引,效率还不错。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"重庆时时彩定胆", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

1条记录访客评论

突然看到这篇文章有两个转发了,心里开心了。

Post by gouki on 2011, December 28, 3:28 PM 引用此文发表评论 #1


发表评论

评论内容 (必填):

小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
连码专家一六肖复式 双色球预测neiba 陕西快乐十分彩票网 免费五码复式连码 澳彩网赢钱技巧
安徽25选5最新开奖结果 广东36选7走势图前60期 快乐双彩软件 大乐透开奖直播 江苏快三彩乐乐