1

検索ページのデータベースから製品を選択するクエリを作成する必要があります。現時点では、クエリは非常に単純です。

SELECT * FROM products WHERE stock > 0 ORDER BY id DESC

このクエリでは、最新の製品から問題なく製品が返されます。間もなく販売が開始されるため、クエリを変更して、販売中の最新の製品で降順で並べ替えてから、降順ではない残りの製品を表示する必要があります。製品がセール中の場合、rrp は 0 ではありません。2 つの別々のクエリを実行せずにこれを行う方法はありますか?

のようなことを考えていた

SELECT * FROM products WHERE stock > 0 ORDER BY (rrp != 0) DESC, id DESC

しかし、それはうまくいきません。

前もって感謝します

4

5 に答える 5

2

複数の列で並べ替えることができます

SELECT * FROM products WHERE stock > 0 ORDER BY rrp DESC, id DESC

または2つの場所で

SELECT * FROM products WHERE stock > 0 AND rrp != 0 ORDER id DESC
于 2012-11-26T11:15:47.670 に答える
1

これを試して:

SELECT * 
FROM products 
WHERE stock > 0 
ORDER BY 
Case when rrp != 0 then 0 else 1 end,
id DESC
于 2012-11-26T11:18:19.510 に答える
0

これを試して

       SELECT * 
              FROM products 
       WHERE stock > 0 

       CASE  WHEN rrp != 0 THEN (ORDER BY rrp DESC) 
       CASE  WHEN rrp= 0   THEN (ORDER BY id DESC)
于 2012-11-26T11:40:57.520 に答える
0
SELECT * FROM products WHERE stock > 0 and rrp != 0 ORDER BY rrp DESC, id DESC
于 2012-11-26T11:19:03.817 に答える
0

RRP はここでブール値のように機能して、製品が販売されているかどうかを判断しますか。

次の参照SQLFIDDLEで確認してください

select * from sale
where stock>0
and rrp <>0
order by stock desc, id

ID  STOCK   RRP
3   490     1
4   200     1
1   120     1

ここで述べた最も単純な要件以外の意図があるようです..

于 2012-11-26T11:23:26.437 に答える