0

したがって、棒グラフのラベルに使用しているクエリがあります。PHPでfetch_arrayを使用してこれらのラベルを抽出しています。ラベルの順序は次のとおりです。

白、アフリカ系アメリカ人、ヒスパニックなど。

しかし、ascまたはdescでタイプ順を実行すると、次のようなアルファベット順になります。

アフリカ系アメリカ人、ヒスパニック、白。これらを特定の順序で具体的に注文する方法はありますか?

4

3 に答える 3

0

ステートメントを使用してCASE、ソート順を指定します。値に0を割り当て、White他のすべての値に1を割り当て、残りの値をアルファベット順に並べ替えます。

ORDER BY
  CASE WHEN label='White' THEN 0 ELSE 1 END,
  label ASC
于 2012-06-19T16:47:51.427 に答える
0

他の場所で注文を定義する必要があります(注文は自由形式であるため、自動ソリューションに依存することはできません)。1つのトリックは、テーブルにフィールドを追加することです。これにより、クエリで次のmyorderように指定できます。ORDER BY myorder

 id  desc      myorder
 ..  ......... ..........
 1   Hispanic  3
 2   White     2
 3   African-  1

このアプローチの利点の1つは、再利用可能であり、ソフトウェアごとに順序を編集でき(この特定の種類のオプションが必要な場合)、任意の行数で機能することです。

于 2012-06-19T16:48:00.213 に答える
-2

mysqlでは、カスタムソート順のフィールド関数を使用できます。例えば:

SELECT * FROM GraphTable ORDER BY FIELD(GraphLabel, 'White', 'African American', 'Hispanic')

またはIDで:

SELECT * FROM GraphTable ORDER BY FIELD(LabelID, 123, 456, 234);

mysqlマニュアルから:

FIELD(str、str1、str2、str3、...)

str1、str2、str3、...リスト内のstrのインデックス(位置)を返します。strが見つからない場合は0を返します。

于 2012-06-19T16:47:09.077 に答える