2013-10-15 123 views
-1

MySQL是否可以按順序排序兩列?請參閱我的示例查詢
排序兩列升序php mysql排序

<?php 
$qResults = mysql_query("SELECT column1, column2 FROM tablename ORDER BY column1 ASC, column2"); 

//The initial data is these 

Column 1  Column 2 
    7    24 
    18    3 
    2    25 
    9    23 
    17    8 
    1    15 
    10    19 
    20    4 
    11    6 
    16    5 

//I want to sort it by this. 
Column 1  Column 2 
    1    15 
    2    25 
    18    3 
    20    4 
    16    5 
    11    6 
    7    24 
    17    8 
    9    23 
    10    19 

?><br> 

按升序對兩列排序。這可能在MySQL查詢中?

+0

您的查詢似乎沒問題。你能提供你的錯誤嗎? –

+0

這不是數據的混合,這是我的程序流程。有時它會在第2列上進入第1列@MostyMostacho – Shudmeyer

+0

是的,對不起,剛剛看到伊利亞的回答,然後我看到你在做什麼,他的解決方案似乎是正確的:) –

回答

1

我終於拿到了你想要什麼:

SELECT * 
FROM torder 
order by least(col1, col2), greatest(col1, col2) 
+0

感謝@llya。它運作良好,但有一個小問題,當我申請一個條件它顯示所有的結果。示例WHERE column1 = 1它顯示兩個結果。 – Shudmeyer

+0

@Shudmeyer把你的完整查詢,因爲我不能再現這個問題 –

+0

SELECT * 從表名WHERE column1 = 1 order by least(column1,column2),most(column1,column2)。它必須只顯示一個結果,但它顯示2 – Shudmeyer

0

試試這個

$qResults = mysql_query("SELECT column1, column2 FROM tablename ORDER BY column1 ASC, column2 ASC"); 

這將排序列1,然後在列1中列2

+0

這不會導致OP正在查找的訂單對於。你應該再次閱讀這個問題。 –

+0

這是mysql的默認行爲,要將這兩個字段排序,您必須對sql結果使用array_sort函數。 –

+0

不清楚array_sort的意思,也不知道MySQL的默認行爲。但是這個答案並沒有回答這個問題(不管OP選擇了它)。 –