MariaDB社区

标题: group by 的输出不理解,请解答 [打印本页]

作者: luofeiyu    时间: 2010-7-15 09:15
标题: group by 的输出不理解,请解答
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);
t2 是这样建立的,请看看,select * from t2 group by gid ;它的输出结果我想不通,请帮助我一下
输出的是:
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 |
+----+------+------+------+
作者: kider    时间: 2010-7-16 10:07
(除非定义了order by,否则MySQL会自动对group by里面的列进行排序。如果不在意数据的顺序,可以使用order by null来跳过自动排序。)

你这个就是默认按照gid排序了,没有用到索引。其实真实数据也是按照排列的。
你想要的结果,需要控制的,如: order by col1 ....




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2