• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

急高分

mysql 搞代码 7年前 (2018-06-01) 143次浏览 已收录 0个评论

急!高分求助!
假设一张表a分别有a1,a2,a3三个字段,a1是主键     ,a2是索引,a3是内容。a1,a2是类型是int,a3任意。现在想做到如下例子效果:    
 
a1         a2         a3    
1             1             A    
2             2             B    
3             2             C    
4             2             D    
5             3             E    
6             3             F    
7             4             G    
 
设计一个数据库语句,使得如果limit     2的话,得到a1=7和a1=5的数据,如果limit     3的话,则得到a1=7,a1=5和a1=2的数据,因为该a表的记录总数有快200万行,所以希望各位能提供一个高效的解决该问题的数据库语句,先谢谢各位!

——解决方案——————–
select min(a1),a2,a3 from csdn group by a2 order by a1 desc limit 3;
——解决方案——————–
mysql> create table t1
-> (
-> a1 int not null auto_increment primary key,
-> a2 int not null,
-> a3 char(1) not null
-> );
Query OK, 0 rows affected (0.09 sec)

mysql> create index t_a2 on t1(a2);
Query OK, 0 rows affected (0.19 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> insert into t1 (a2,a3) values
-> (1, 'A '),
-> (2, 'B '),
-> (2, 'C '),
-> (2, 'D '),
-> (3, 'E '),
-> (3, 'F '),
-> (4, 'G ');
Query OK, 7 rows affected (0.16 sec)
Records: 7 Duplicates: 0 Warnings: 0

mysql> select * from t1 group by a2 order by a1 desc limit 2;
+—-+—-+—-+
| a1 | a2 | a3 |
+—-+—-+—-+
| 7 | 4 | G |
| 5 | 3 | E |
+—-+—-+—-+
2 rows in set (0.00 sec)

mysql> select * from t1 group by a2 order by a1 desc limit 3;
+—-+—-+—-+
| a1 | a2 | a3 |
+—-+—-+—-+
| 7 | 4 | G |
| 5 | 3 | E |
| 2 | 2 | B |
+—-+—-+—-+
3 rows in set (0.00 sec)


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:急高分
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址