Mysql 的bug?子查询包含group by结果各异
三张表,字段和数据如下,简单起见都是整形:
zzz_repair:==》维修订单表, 列依次为:维修单号, 省份

zzz_repair_goods:==》维修商品表, 列依次为 维修单号、商品名称、商品数量

zzz_sell: ==》销售表,列依次为销售单号、销售省份、销售数量

sql: =>求平均每个省的返修比率
select data_view.province,
sum(num) repairNum, --维修数量
(select sum(num) from zzz_sell z where z.province=data_view.province) as sellNum, --销售数量
sum(num)/(select sum(num) from zzz_sell z where z.province=data_view.province) as rate --维修比率 from (select a.province, b.num from zzz_repair a, zzz_repair_goods b where a.sn=b.sn) data_view --关联维修表与维修商品表 group by data_view.province --按省分组
最后的结果如下(你可以直接用最后附上的sql拷贝到sql分析器里面,看看结果));怎么结果差异这么大?是sql写的不对还是?
MySQL 5.5

MySQL 5.6

附上所有脚本:
drop table IF EXISTS zzz_repair; drop table IF EXISTS zzz_repair_goods; drop table IF EXISTS zzz_sell; CREATE TABLE IF NOT EXISTS `zzz_repair` ( `sn` int(11) NOT NULL, `province` varchar(64) NOT NULL ) ; INSERT INTO `zzz_repair` (`sn`, `province`) VALUES (1, '北京'), (2, '上海'); CREATE TABLE IF NOT EXISTS `zzz_repair_goods` ( `sn` int(11) NOT NULL, `name` int(11) NOT NULL, `num` int(11) NOT NULL ) ; INSERT INTO `zzz_repair_goods` (`sn`, `name`, `num`) VALUES (1, 2, 10), (2, 2, 5); CREATE TABLE IF NOT EXISTS `zzz_sell` ( `sn` int(11) NOT NULL, `province` varchar(64) NOT NULL, `num` int(11) NOT NULL ) ; INSERT INTO `zzz_sell` (`sn`, `province`, `num`) VALUES (1, '北京', 20), (2, '上海', 20), (3, '上海', 20); select data_view.province, sum(num) repairNum, (select sum(num) from zzz_sell z where z.province=data_view.province) as sellNum, sum(num)/(select sum(num) from zzz_sell z where z.province=data_view.province) as rate from (select a.province, b.num from zzz_repair a, zzz_repair_goods b where a.sn=b.sn) data_view group by data_view.province

浙公网安备 33010602011771号