假设一张表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万行,所以希望各位能提供一个高效的解决该问题的数据库语句,先谢谢各位!
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万行,所以希望各位能提供一个高效的解决该问题的数据库语句,先谢谢各位!
解决方案 »
- mysql安装目录MySQL\MySQL Server 5.1\data下的query_log是干什么的
- 新入手MYSQL,虚心请教
- mysql bin 日志 编辑
- 在MYSQL 中,如何判断一个varchar字段内容的长度。比如sqlserver中的len(字段名)?
- vb 连接MYsql多表查询 出错 多步操作产生错误。请检查每一步的状态值
- 求2句SQL语句 ..................
- XP中如何安装哪个版本的mysql(4.0.23还是4.1.8)
- erwin4.0如何和mysql联系?
- mysql跨schema之间建立trigger同步更新两张表的trigger写法
- MySQL5.1启动失败,错误为1067,求助
- 请问select和distinct可以组合吗?
- navicat管理MYSQL储存2进制文件问题
-> (
-> 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: 0mysql> 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: 0mysql> 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)