基于一列一正或负整数订购一个MySQL表

问题描述 投票:1回答:2

我有一个名为qazxsw POI与qazxsw POI和POI qazxsw列的MySQL表。

这里就是我试图完成:

  • 如果example为空,为了通过my_order
  • 如果alt_order不为空,由alt_order顺序,但行位置的上方或下方,其中,应当基于在my_order整数。

伪代码:

alt_order

理想的输出:

my_order

尝试:

alt_order

编辑:

如果SELECT * FROM example ORDER BY IF(alt_order IS NULL, my_order, [MOVE UP OR DOWN BASED ON alt_order]) 为正N,那么它应该向下移动n行。在另一方面,如果+--------+----------+-----------+-------------------------------------+ | desc | my_order | alt_order | notes | +--------+----------+-----------+-------------------------------------+ | Item 1 | 1 | NULL | Ordered by my_order | | Item 3 | 122 | -1 | Ordered by my_order + alt_order | <-- Move up one row | Item 2 | 50 | NULL | Ordered by my_order | | Item 4 | 127 | NULL | Ordered by my_order | | Item 5 | 205 | NULL | Ordered by my_order | +--------+----------+-----------+-------------------------------------+ 是否定的N,那么就应该上移n行。

mysql sql-order-by
2个回答
1
投票

它看起来像您指定可以通过命令行两次获得的结果。首先,为了通过SELECT * FROM example ORDER BY IF(alt_order IS NULL, my_order, my_order + alt_order) # The problem with using this method is that the value of my_order # has to be the same as the value of above it to work. ,并分配一个初始的“行号”。然后,通过取第二次通过,由“行偏移”调整初始“行数”订购。因为 “行数” 和 “行偏移” 都是整数,当我们添加它们(RN = 2 + RO = 0),我们可以得到一个碰撞(RN = 3 RO = -1)。为了使更多的排序确定的,我们可以根据需要调整

alt_order

0
投票

查询可在下面为您服务或者在正确的方向发送给您。按照你订单使用CASE BY语句,你可以控制的方式您对数据进行排序。

alt_order
© www.soinside.com 2019 - 2024. All rights reserved.