-1

左右の靴が混ざったテーブルがあり、そのうちのいくつかは防水です。

アルファベット順に並べ替えるクエリを作成する必要がありますが、名前が同じ場合は、左右の前に防水列を使用します。

例えば

+-------------------------+------------+------------+
| Shoe name               | Waterproof | Left/Right |
+-------------------------+------------+------------+
| boot                    |     0      |   left     |
| sandal                  |     0      |   left     |
| shoe                    |     1      |   left     |
| boot                    |     1      |   left     |
| boot                    |     0      |   right    |
| boot                    |     1      |   right    |
| sandal                  |     0      |   right    |
| shoe                    |     1      |   right    |
+-------------------------+------------+------------+

このように並べる必要があります...

+-------------------------+------------+------------+
| Shoe name               | Waterproof | Left/Right |
+-------------------------+------------+------------+
| boot                    |     0      |   left     |
| boot                    |     0      |   right    |
| boot                    |     1      |   left     |
| boot                    |     1      |   right    |
| sandal                  |     0      |   left     |
| sandal                  |     0      |   right    |
| shoe                    |     1      |   left     |
| shoe                    |     1      |   right    |
+-------------------------+------------+------------+

それはできますか?

4

3 に答える 3

1

でも、もしサンダルが防水じゃなかったら?

変更されたデータ構造では、次のように動作するはずです。

SELECT `Shoe name`, `Waterproof`, `Left/Right`
 FROM shoe_table
  ORDER BY CONCAT( `Shoe name`, ', ', `Waterproof` ), `Left/Right`;

あなたが試すことができます:

select * from shoes order by 2, 1;

または列名による:

select * from shoes order by Waterproof, `Shoe name`;
于 2014-01-07T17:08:14.617 に答える
0

これを試して:

ORDER BY ShoeName,Waterproof 
于 2014-01-07T17:08:26.553 に答える
0

shoesこれには、列の解析が必要です。最も簡単な方法は、次を使用することsubstring_index()です。

order by substring_index(ShoeName, '(', 1), Waterproof, ShowName
于 2014-01-07T17:22:56.153 に答える