MYSQL-尽管使用ORDER BY id,但使用LIMIT和GROUP BY时的不确定顺序

问题描述

the db schema

有关数据库的注释

它是使用Prisma生成的,因此不幸的是,多对多表中的列名分别为“ A”和“ B”。 “ A”是指在字母表中排在第一位的表,而“ B”是第二个表。例如,在_ReadingToWord中,“ A”指的是Reading.id,而“ B”指的是Word.id,因为“ r”在字母表中的“ w”之前。

问题

我有以下查询,该查询使用limit语句实现分页。 我遇到的问题是结果顺序是不确定的。 (如果我多次执行查询,则有时顺序会有所不同。)

我正在按ID(这是主键)进行订购,因此我认为应该确保订单的一致性。

任何人都可以解释为什么订购不确定性以及如何解决吗?

select * from (
    SELECT w.id,hiragana,group_concat( distinct(concat(coalesce(r.downStep,-1) + 1,",r.katakana)) order by r.downStep SEPARATOR ' ') 
    from Hiragana a join _HiraganaToWord b on a.id = b.A join 
    Word w on w.id = b.B join _ReadingToWord rtw on w.id = rtw.B join 
    Reading r on r.id = rtw.A 
    WHERE hiragana like "あ%"
    group by w.id
   ) 
   as groupQuery
 order by length(hiragana),id asc limit 600,5;

样本运行

run 1

run 2

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)