0

MySQLで、テーブルがあるとしましょう。

 ----------------------
| Price | ProductType |
 ----------------------
8.5     | Foodstuff
8.5     | Mobile
147     | Application
2       | Mobile
8.5     | Electronic
8.5     | Mobile

この状況では、私ORDER BY Price, ProductTypeがそうすると、通常は次のようになります。

 ----------------------
| Price | ProductType |
 ----------------------
2       | Mobile
8.5     | Electronic
8.5     | Foodstuff
8.5     | Mobile
8.5     | Mobile
147     | Application

今問題は次のとおりです。

  • 自分でカスタマイズできますORDERか?(たとえば、どちらが最初に来て、どちらが次に来るか)

たとえばMySQL Query、次のような結果を取得するためのaの記述方法は次のとおりです。

 ----------------------
| Price | ProductType |
 ----------------------
2       | Mobile
8.5     | Electronic <- 1st in Order
8.5     | Mobile     <- 2nd in Order
8.5     | Mobile     <- ..
8.5     | Foodstuff  <- 3rd in Order
147     | Application

このサンプル(最初の列8.5の後)の価格行に焦点を当ててください。次に、明らかに表示したいのは、最初に、次に、次にです。それは可能ですか?Order ByPriceElectronicMobileFoodstuffMySQL

4

2 に答える 2

5

使用するFIELD

ORDER BY Price, FIELD(ProductType,'Electronic','Mobile','Foodstuff')
于 2013-01-07T07:17:48.207 に答える
2

カスタムオーダーのテーブルに3番目の(INT)列を追加するだけで、スマートな名前を付けることができます。次に、それによって注文することができます:

ORDER BY custom_order

それでも価格をカスタムオーダーよりも優先させたい場合は、次のクエリを実行できます。

ORDER BY Price, custom_order

MySQLに配置したい順序を推測させることはできないため、代替ソリューションはJWによって提案されたものにする必要があります。ここで、クエリで実際の順序を指定します。ただし、大きなテーブルと動的データがある場合は、私のソリューションをお勧めします。

次に、データベースを巧妙に管理して、アイテムを好きなように簡単に並べ替えることができれば幸いです...私は多くのデータベース管理を成功させ、AJAXとjQuerySortableを使用して簡単なドラッグアンドドロップで並べ替えることができます。

于 2013-01-07T07:17:51.677 に答える