1

我在同一张表上有两个查询需要加入一个 mysqli 结果。被证明非常独特的问题是对各个语句进行排序,然后合并成一个结果,保留顺序,这样我就可以遍历每个结果。

这是查询的简化版本:

"SELECT number FROM items WHERE number > 0 ORDER BY number ASC"

"SELECT number FROM items WHERE number >= 0 ORDER BY number  DESC"

因此,给定一个包含正值和负值的表,结果应该是这样的:

1、2、3、4、5、0、-1、-2、-3、-4、-5

然后将结果通过 PHP while 循环。

4

1 回答 1

0

像这样的东西应该工作:

SELECT number FROM (
    SELECT * FROM (
        SELECT number, number AS sort1, 'a' AS sort2 FROM items WHERE number > 0 ORDER BY number ASC
    ) s1
    UNION
        SELECT 0, 'b', 0 FROM items WHERE number = 0
    UNION SELECT * FROM (
        SELECT number, 'c' AS sort1, number AS sort2 FROM items WHERE number < 0 ORDER BY number  DESC
    ) s2
) ss1
ORDER BY ss1.sort1 ASC, ss1.sort2 ASC

这将选择具有不同排序标签的结果的 3 部分,以便您可以使用它们来按您想要的方式排序。诀窍是把0它放在哪里。

于 2013-11-14T14:32:04.163 回答