在订购每个查询结果后联合多个mysql查询

时间:2013-11-14 12:12:29

标签: php mysql union

我在同一个表上有两个需要加入一个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循环。

1 个答案:

答案 0 :(得分: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放在原处。