1

たくさんの製品を含むテーブルがあり、いくつかは特別なもので、いくつかは使用されているとしましょう。

| Desc       |  Sale price | Special price | Used price
--------------------------------------------------------
| Product 1  |       20.00 |         15.00 |       0.00
| Product 2  |       38.00 |          0.00 |      22.00
| Product 3  |       21.00 |          0.00 |       0.00
| Product 4  |       16.00 |         12.00 |       8.00
| Product 5  |        0.00 |          0.00 |      25.00

すべての 0.00 を無視しながら、(同じクエリ内で) 製品を 3 つの列内で最低値から最高値に並べ替える方法を見つけようとしています(例: 使用済み 0.00 は、その特定の使用可能なものがないことを表します)製品)..

結果は次のようになります。

| Desc       |  Sale price | Special price | Used price
--------------------------------------------------------
| Product 4  |       16.00 |         12.00 |      *8.00   8.00 is the lowest
| Product 1  |       20.00 |        *15.00 |       0.00   15.00 is the lowest, 1x 0.00 is ignored
| Product 3  |      *21.00 |          0.00 |       0.00   21.00 is the lowest, 2x 0.00 are ignored
| Product 2  |       38.00 |          0.00 |     *22.00   22.00 is the lowest, 1x 0.00 is ignored
| Product 5  |        0.00 |          0.00 |     *25.00   25.00 is the lowest, 2x 0.00 are ignored

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

0

LEAST()とを使用したトリックを次に示します。GREATEST()

ORDER BY LEAST(IF(SalePrice = 0, GREATEST(SalePrice, SpecialPrice, UsedPrice) + 1, SalePrice), 
               IF(SpecialPrice = 0, GREATEST(SalePrice, SpecialPrice, UsedPrice) + 1, SpecialPrice), 
               IF(UsedPrice = 0, GREATEST(SalePrice, SpecialPrice, UsedPrice) + 1, UsedPrice)) ASC
于 2013-08-06T14:48:17.777 に答える