0

MySQLには次のテーブルがあります。

----------------------------
| 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 |
----------------------------

これを行うにはどのクエリが必要ですか?

4

3 に答える 3

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
于 2012-04-05T10:27:42.727 に答える
0

順序の異なる複数の列で並べ替えることができます。

これを試して....

SELECT*FROMテーブルORDERBYprice DESC、price_promo ASC

于 2012-04-05T10:34:14.733 に答える
-2

詳細を教えてください。(例では)必要な結果を取得するには、次のクエリを使用できます。

SELECT * FROM table ORDER BY price DESC , price_promo ASC 
于 2012-04-05T10:33:18.650 に答える