mysql的group by是根据排序第一条来取数的

今天遇到一个问题,将MySQL的sql语句改为Oracle的语句时,MySQL的select的未聚合字段没有全部放在group by里面,这就导致跟Oracle查出来的数据不一致,实验 一:mysql的group by是根据排序第一条来取数的_第1张图片

按照id,code的降序排列,mysql的group by是根据排序第一条来取数的_第2张图片

在group by的时候取的是每一组的第一条;

实验二:mysql的group by是根据排序第一条来取数的_第3张图片

mysql的group by是根据排序第一条来取数的_第4张图片

依旧是取的该组的第一条数据

测试代码如下:

DROP TABLE IF EXISTS `test0511`;
CREATE TABLE `test0511`  (
  `id` int(11) NULL DEFAULT NULL,
  `code` varchar(30) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  `name` varchar(30) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
  `amt` double NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of test0511
-- ----------------------------
INSERT INTO `test0511` VALUES (1, '90', 'zhangsan', 10000);
INSERT INTO `test0511` VALUES (2, '85', 'lisi', 20000);
INSERT INTO `test0511` VALUES (4, '75', 'zhaoliu', 40000);
INSERT INTO `test0511` VALUES (1, '100', 'zhangsi', 50000);
INSERT INTO `test0511` VALUES (1, '110', 'zhangs', 60000);
INSERT INTO `test0511` VALUES (2, '85', 'lisi', 25000);
INSERT INTO `test0511` VALUES (2, '85', 'lisi', 20000);
INSERT INTO `test0511` VALUES (3, '80', 'wangwu', 40000);
INSERT INTO `test0511` VALUES (3, '79', 'wang', 30000);
INSERT INTO `test0511` VALUES (3, '75', 'wangwu', 30000);



SELECT * from (
SELECT t.id,t.`name`,t.`code`,t.amt
from test0511 t
order by t.id asc,t.`code` asc
)t
GROUP BY t.id

 

你可能感兴趣的:(mysql,mysql)