0

価格(full_price、sales_price)の2つの列があり、これらの列に数値が含まれている場合。SQLステートメントが複数の順序を実行できることは知っていますが、これらの列に値が含まれている場合、どのように機能しますか?

("SELECT * FROM table ORDER BY full_price,sales_price DESC")

2つの列の最小値を選択するようにするにはどうすればよいですか?そして、full_priceとsales_priceの間で選択された列に基づいてデータを並べ替えますか?

注:sales_priceに値がない場合があります。

ありがとう

編集:

id    full_price        sales_price
1      23                 42           
2      342                200
3      1
4      10                 8

私がやろうとしているのは、これらの数値を使用することです。最低価格に関連付けられたデータを出力できます。

順序は次のとおりです。

3,4,1,2

理由:

3: 1
4: 8
1: 23
2: 200
4

3 に答える 3

4

sales_price空白がNULLであり、NULLにするfull_priceことはできないと仮定します。

select ...
from ...
where ...
order by case
    when sales_price is null then full_price
    else least(full_price, sales_price)
end

おそらく、タイから一貫性のある賢明な結果を得るために、セカンダリソートキーを追加する必要があります。

于 2012-07-25T05:15:06.393 に答える
1
SELECT * FROM table
ORDER BY case when sales_price is null or full_price is null
              then 0
              when full_price > sales_price
              then sales_price ASC
              else full_price ASC
         end
于 2012-07-25T05:12:35.710 に答える
0

full_priceとsales_priceの差に基づく結果が必要な場合は、次を試してください。

SELECT *
FROM table
ORDER BY ABS(full_price - IF(sales_price IS NULL, 0, sales_price)) ASC

または、full_priceとsales_priceの比較に基づく結果が必要な場合は、次を試してください。

SELECT *
FROM table
ORDER BY IF(full_price < IF(sales_price IS NULL, 0, sales_price), 
            full_price , sales_price ) ASC
于 2012-07-25T05:12:36.120 に答える