OB MySQL模式的关闭ONLY_FULL_GROUP_BY时,与mysql存在兼容性问题。
场景:对数据进行分组,每组排序,并取第一条数据。
表结构:
CREATE TABLE `t1` (
`a` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'a',
`b` varchar(120) NOT NULL COMMENT 'b',
PRIMARY KEY (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=122289 DEFAULT CHARSET=utf8mb4 COMMENT='测试表t1';
CREATE TABLE `t2` (
`c` int(11) NOT NULL AUTO_INCREMENT COMMENT 'c',
`d` varchar(120) NOT NULL COMMENT 'd',
`e` date NOT NULL COMMENT 'e',
`f` int(11) NOT NULL COMMENT 'f',
PRIMARY KEY (`c`),
KEY `idx_d` (`d`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=539037 DEFAULT CHARSET=utf8mb4 COMMENT='t2';
测试SQL如下:
SELECT
*
FROM
(
SELECT
distinct
t1.b as b,
t2.c as c,
t2.d as d,
t2.e as e,
t2.f as f
FROM
t1
INNER JOIN t2 ON t1.b = t2.d
where b='2y'
ORDER BY
t2.e desc
) tmp
GROUP BY
b;
MySQL结果:
OB结果:
tmp表排序是这样的:
MySQL可以正常取出,OB取出来除了b列,其他的不是每组排序的第一条数据。从MySQL迁移时需要进行大量的排查和改造。请问有什么好的解决办法吗?比如配置,hint等。附件为测试表结构及数据,可直接导入测试。
303_export_file.zip (6.9 MB)