2012-04-05 74 views
0

我在MySQL如下表:MYSQL ORDER BY 2列

---------------------------- 
| id | price | price_promo | 
---------------------------- 
| 1 | 10 |   0 | 
| 2 |  8 |   0 | 
| 3 | 10 |   9 | 
---------------------------- 

我有這個下面的查詢:

$SQLquery = "SELECT * FROM table ORDER BY price ASC" 

所有我想要的是忽略價格列,如果price_promo > 0有以實際收購價格訂購,並獲得此結果:

---------------------------- 
| id | price | price_promo | 
---------------------------- 
| 1 | 10 |   0 | 
| 3 | 10 |   9 | 
| 2 |  8 |   0 | 
---------------------------- 

查詢我需要做什麼t他?

+0

沒有必要提及升序ASC,因爲ASC採取的是默認 – 2012-04-05 10:24:33

+0

你想定製您的ORDER BY CLAUSE? – Teja 2012-04-05 10:25:57

+0

是的,我想通過實際購買價格獲得ASC訂單。我需要什麼查詢? – CBuzatu 2012-04-05 10:27:50

回答

6

你可以嘗試

SELECT * FROM your_table 
ORDER BY 
    CASE 
     WHEN price_promo = 0 THEN price 
     WHEN price_promo IS NULL then price 
     ELSE price_primo 
    END 

用戶評論後編輯:
如果你想遞減順序使用

SELECT * FROM your_table 
ORDER BY 
    CASE 
     WHEN price_promo = 0 THEN price 
     WHEN price_promo IS NULL then price 
     ELSE price_primo 
    END DESC 
+0

+1這確實解決了目前的問題數據。但是,如果沒有收購價格,我會選擇將其設爲NULL而不是0,但這是另一個問題。 – GolezTrol 2012-04-05 10:32:08

+0

@GolezTrol:看看我編輯的答案:) – Marco 2012-04-05 10:33:05

+0

很好的答案,謝謝!我還有一個問題:如果我想要DESC排序,我該如何嘗試? – CBuzatu 2012-04-05 10:46:23

-2

請提供更多的細節?要獲得您想要的結果(在您的示例中),您可以使用此查詢:

SELECT * FROM table ORDER BY price DESC , price_promo ASC 
0

您可以按不同順序排列多列。

試試這個....

SELECT * FROM 表 ORDER BY DESC價格,price_promo ASC