Mariadb 根据顺序,使用比较运算符选择,跳过行

Mariadb 根据顺序,使用比较运算符选择,跳过行,mariadb,sql-order-by,Mariadb,Sql Order By,我有一个来自SELECT查询的结果集,它基于某个orderby条件,我试图检查结果集呈现顺序的完整性。首先,我指定了一个限制,在此基础上,结果集大小是有限的。然后,我从结果集中选择一个随机的PK值,获得一个特定的行,并对该行值使用比较运算符,用于下一个SELECT。类似这样的情况(假设a是上面的随机行): 基本上,我在这里试图做的是,确保对于特定顺序的结果集(R),当选择一个随机的PK值,并对基于PK的行值发出带有比较运算符的SELECT语句时,结果集(s)包含R中PK之后/之前的行,具体取决于

我有一个来自
SELECT
查询的结果集,它基于某个
orderby
条件,我试图检查结果集呈现顺序的完整性。首先,我指定了一个
限制
,在此基础上,结果集大小是有限的。然后,我从结果集中选择一个随机的
PK
值,获得一个特定的行,并对该行值使用比较运算符,用于下一个
SELECT
。类似这样的情况(假设a是上面的随机行):

基本上,我在这里试图做的是,确保对于特定顺序的结果集(R),当选择一个随机的PK值,并对基于PK的行值发出带有比较运算符的
SELECT
语句时,结果集(s)包含RPK之后/之前的行,具体取决于顺序是升序还是降序

它基本上可以工作,除了少数情况下,基于PK的行之后的下一行在几个列中具有与基于PK的行相同的值。例如,这些是resultset R中的最后几行:

ID(varchar)     VALUE(varchar)  DESC1(text)     DESC2(text)     NAME(text)
-------------   -------------   -------------   -------------   -------------
62E212AF            C09A        F/T/K              AH            AN
CAFFA217            C09AA       F/T/K 2            Ah            An
D90222CC            C09BA       F/T/K 2d           Ahod          Anod
现在,如果我尝试在
ID62E212AF
之后获取新的结果集,它将跳过
IDCAFFA217
,结果集中的第一个ID是
D90222CC
。类似的模式也在其他一些地方重复。在这种情况下,我是这样下订单的:

order by 
  NAME asc,
  VALUE asc,      
  DESC1 asc, 
  DESC2 asc, 
  ID asc
我真的很感激你能帮我

a.X > b.X AND a.Y > b.Y
未正确检查两件式订购。相反:

a.X > b.X OR (a.X = b.X AND a.Y > b.Y)
或者:

a.X >= b.X AND (a.X > b.X OR a.Y > b.Y)
“行构造函数”也可以工作,但可能无法很好地优化:

(a.X, a.Y) > (b.X, b.Y)

orderby
做的是“正确的事情”。

如何以不同的排序顺序对多个字段进行比较?例如,
X ASC
Y DESC
Z DESC
W ASC
@RoshanUpreti-混合方向(ASC&DESC)可能是“错误的”。超过两项会变得相当混乱,但这是可能的。(我没有这样做的经验。)如果性能不是问题,只需使用行构造函数即可。
(a.X, a.Y) > (b.X, b.Y)