2013-11-14 125 views
1

我在同一个表上有两个需要连接到一个mysqli结果的查询。被证明是非常独特的问题是排序单个语句,然后合并成一个结果,保存顺序,所以我可以迭代每个结果。订购每个查询结果后联合多个mysql查询

下面是该查询的简化版本:

"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循环。

+0

顺便说一句我认为你犯了一个错字。你的两个查询都返回正数。 – ZeWaren

回答

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放在原来的位置。