0

mysql フィールドの値をソートするコードを書いています。私のフィールド値は以下のとおりです

**downloads**
N/A
10

50
30
unlimited
N/A
70
unlimited

それらはmysqlテーブルフィールドにあります。私は以下のようにそれらの同意と降順をソートする必要があります

Assending
N/A

10
30
50
70
unlimited
unlimited


Desending
unlimited
unlimited
70
50
30
10

N/A

スペースは、一部の行にデータがありません。私は以下のようにmysqlクエリを書きました

SELECT * FROM fltable  ORDER BY LENGTH(downloads), downloads DESC

しかし、これは正しいソートを返しません。SQLまたはPHPソリューションを使用して、誰かがこれを手伝ってくれますか? ありがとうございました

4

4 に答える 4

1
SELECT * FROM fltable  
ORDER BY case when downloads = 'N/A' then 1
              when downloads is null then 2
              when downloads = 'unlimited' then 4
              else 3
         end DESC, 
         downloads * 1 DESC
于 2013-09-03T10:36:31.733 に答える
0

別の同様の方法:

SELECT download, (download= 'N/A') boolNA, (download= '') boolBlank, 
       (download+0 > 0) boolNum, (download= '0') boolZero 
FROM table 
ORDER BY boolNA DESC, boolBlank DESC, boolZero DESC, boolNum DESC, 
         (download+0), download

そうすれば、ソートするグループを作成できます。

次のような結果になる可能性があります。

N/A

10
30
50
70
unlimited
unlimited

上記と同じ結果ですが、方法が異なります。グループ化する必要があるデータ型が少数 (3 未満) しかない場合は、簡単かもしれません。

于 2013-10-29T14:46:21.247 に答える