MySQL结果不同5.6到5.7(AWS RDS)

时间:2018-03-01 18:39:10

标签: mysql amazon-web-services amazon-rds django-orm

在RDS上从MySQL 5.6升级到5.7的过程中,我发现许多查询返回的结果存在差异。

例如(表名混淆):

SELECT `model_s`.`id`,`model_s`.`pr`,`model_s`.`o_id`,`model_s`.`uploadee`
    ,`model_s`.`created_at`,`model_s`.`updated_at`,`model_s`.`o_ref`,`model_s`.`i_ref`
    ,`model_s`.`stss`,`model_s`.`u_fol`,`model_s`.`sdd`,`model_s`.`an_t_id`,`model_s`.`rean`
    ,`model_s`.`dpp`,`model_s`.`bg_t_cr`
FROM `model_s` 
INNER JOIN `o_o` ON (`model_s`.`o_id` = `o_o`.`id`)
WHERE (
    `model_s`.`pr` IN
    (
        SELECT u0.`id` AS col1
        FROM `pr_pr` u0
        LEFT OUTER JOIN `pr_stfr_pr_p` u1 ON (u0.`id` = u1.`pr`)
        LEFT OUTER JOIN `acc_strf` u2 ON (u1.`stfr_id` = u2.`id`)
        LEFT OUTER JOIN `acc_us_strf_as` u3 ON (u2.`id` = u3.`stfr_id`)
        LEFT OUTER JOIN `pr_us_pr_p` u5 ON (u0.`id` = u5.`pr`)
        WHERE (u3.`usr` = 7 OR u5.`usr` = 7)
    )
    AND NOT (`model_s`.`stss` = d)
    AND `o_o`.`name` LIKE %my text%
)
ORDER BY `model_s`.`created_at` DESC

在这种情况下,5.6返回1个结果,5.7返回2个结果(后者是预期的行为)。

DB的选项仅仅是默认的RDS 5.6和5.7选项(根本没有改变)。

任何想法为什么使用默认选项我们会看到5.6和5.7之间的这种差异? (请不要评论查询的复杂性/可读性/优化 - 它是由Django ORM生成的,是未来的问题......)

0 个答案:

没有答案