2012-04-05 4 views
0

Ich habe die folgende Tabelle in MySQL:MYSQL ORDER BY 2 Spalten

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

Ich habe diese folgende Abfrage:

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

Alles, was ich will, ist die Preisspalte zu ignorieren, wenn price_promo > 0 ein haben Auftrag durch realen Erwerbspreis, und dieses Resultat zu erhalten:

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

welche Frage ich tun muss t seine?

+0

gibt es keine Notwendigkeit für den Aufstieg zu erwähnen asc ist, weil asc standardmäßig genommen wird –

+0

Wollen Sie um Ihre BESTELLUNG DURCH KLAUSE anzupassen? – Teja

+0

Ja, ich möchte eine ASC-Bestellung zum tatsächlichen Kaufpreis erhalten. Welche Frage brauche ich? – CBuzatu

Antwort

6

könnten Sie versuchen,

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

nach Benutzer Kommentar Editiert:
Wenn Sie bestellen diese

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 Dies löst das Problem für die aktuelle Daten. Wenn es jedoch keinen Erwerbspreis gibt, würde ich wählen, es "NULL" anstelle von "0" zu machen, aber das ist ein anderes Problem. – GolezTrol

+0

@GolezTrol: werfen Sie einen Blick auf meine bearbeitete Antwort :) – Marco

+0

Große Antwort, danke! Ich habe eine andere Frage: Wenn ich DESC-Sortierung möchte, wie kann ich es versuchen? – CBuzatu

-2

Bitte mehr verwenden möchten absteigend Details geben? Um die gewünschten Ergebnisse zu erhalten, können Sie diese Abfrage verwenden:

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

Sie können nach mehreren Spalten mit unterschiedlicher Reihenfolge sortieren.

Try this ....

SELECT * FROM Tabelle ORDER BY Preis DESC, price_promo ASC