求一条mysql的语句
时间:2010-07-14
来源:互联网
使用下面的语句,创建数据库。
create table t2 (
id int primary key,
gid char,
col1 int,
col2 int
) engine=myisam;
insert into t2 values
(1,'A',31,6),
(2,'B',25,83),
(3,'C',76,21),
(4,'D',63,56),
(5,'E',3,17),
(6,'A',29,97),
(7,'B',88,63),
(8,'C',16,22),
(9,'D',25,43),
(10,'E',45,28),
(11,'A',2,78),
(12,'B',30,79),
(13,'C',96,73),
(14,'D',37,40),
(15,'E',14,86),
(16,'A',32,67),
(17,'B',84,38),
(18,'C',27,9),
(19,'D',31,21),
(20,'E',80,63),
(21,'A',89,9),
(22,'B',15,22),
(23,'C',46,84),
(24,'D',54,79),
(25,'E',85,64),
(26,'A',87,13),
(27,'B',40,45),
(28,'C',34,90),
(29,'D',63,8),
(30,'E',66,40),
(31,'A',83,49),
(32,'B',4,90),
(33,'C',81,7),
(34,'D',11,12),
(35,'E',85,10),
(36,'A',39,75),
(37,'B',22,39),
(38,'C',76,67),
(39,'D',20,11),
(40,'E',81,36);
下面的查询语句
select * from t2 group by gid;
输出的是:
+----+------+------+------+
| id | gid | col1 | col2 |
+----+------+------+------+
| 1 | A | 31 | 6 |
| 2 | B | 25 | 83 |
| 3 | C | 76 | 21 |
| 4 | D | 63 | 56 |
| 5 | E | 3 | 17 |
+----+------+------+------+
5 rows in set (0.00 sec)
为何不输出下面:
| id | gid | col1 | col2 |
+----+------+------+------+
| 6 | A | 29 | 97 |
| 7 | B | 88 | 63 |
| 8 | C | 16 | 22 |
| 9 | D | 25 | 43 |
| 10 | E | 45 | 28 |
+----+------+------+------+
create table t2 (
id int primary key,
gid char,
col1 int,
col2 int
) engine=myisam;
insert into t2 values
(1,'A',31,6),
(2,'B',25,83),
(3,'C',76,21),
(4,'D',63,56),
(5,'E',3,17),
(6,'A',29,97),
(7,'B',88,63),
(8,'C',16,22),
(9,'D',25,43),
(10,'E',45,28),
(11,'A',2,78),
(12,'B',30,79),
(13,'C',96,73),
(14,'D',37,40),
(15,'E',14,86),
(16,'A',32,67),
(17,'B',84,38),
(18,'C',27,9),
(19,'D',31,21),
(20,'E',80,63),
(21,'A',89,9),
(22,'B',15,22),
(23,'C',46,84),
(24,'D',54,79),
(25,'E',85,64),
(26,'A',87,13),
(27,'B',40,45),
(28,'C',34,90),
(29,'D',63,8),
(30,'E',66,40),
(31,'A',83,49),
(32,'B',4,90),
(33,'C',81,7),
(34,'D',11,12),
(35,'E',85,10),
(36,'A',39,75),
(37,'B',22,39),
(38,'C',76,67),
(39,'D',20,11),
(40,'E',81,36);
下面的查询语句
select * from t2 group by gid;
输出的是:
+----+------+------+------+
| id | gid | col1 | col2 |
+----+------+------+------+
| 1 | A | 31 | 6 |
| 2 | B | 25 | 83 |
| 3 | C | 76 | 21 |
| 4 | D | 63 | 56 |
| 5 | E | 3 | 17 |
+----+------+------+------+
5 rows in set (0.00 sec)
为何不输出下面:
| id | gid | col1 | col2 |
+----+------+------+------+
| 6 | A | 29 | 97 |
| 7 | B | 88 | 63 |
| 8 | C | 16 | 22 |
| 9 | D | 25 | 43 |
| 10 | E | 45 | 28 |
+----+------+------+------+
作者: 罗非鱼 发布时间: 2010-07-14
+----+------+------+------+
| id | gid | col1 | col2 |
+----+------+------+------+
| 1 | A | 31 | 6 |
| 2 | B | 25 | 83 |
| 3 | C | 76 | 21 |
| 4 | D | 63 | 56 |
| 5 | E | 3 | 17 |
+----+------+------+------+
id 1 ...是 (gid=A group)里的第一个
id 2 ...是 (gid=B group)里的第一个
...
以此类推
如果想显示group里的最后一个
可以这样select * from t2 group by gid desc;
| id | gid | col1 | col2 |
+----+------+------+------+
| 1 | A | 31 | 6 |
| 2 | B | 25 | 83 |
| 3 | C | 76 | 21 |
| 4 | D | 63 | 56 |
| 5 | E | 3 | 17 |
+----+------+------+------+
id 1 ...是 (gid=A group)里的第一个
id 2 ...是 (gid=B group)里的第一个
...
以此类推
如果想显示group里的最后一个
可以这样select * from t2 group by gid desc;
作者: gzbao9999 发布时间: 2010-07-16
不明白LZ用这个命令想查询什么,GROUP BY一般用来计数,按你的语句,有8种输出可能,每5行就是一种可能,你所说的结果也是符合的,但输出只输出第一种
作者: baicai271 发布时间: 2010-07-23
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28