5

次のmysqlクエリでは、カスタムのorder byステートメントを使用しているため、アルファベット順ではなく特定の順序でさまざまなサイズを表示できます。

select distinct size 
from product p left join productsizes ps 
             on p.productcode = ps.size_prodcode 
order by field(size, 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL')

一部の商品にも数値サイズがある場合、カスタム注文と一緒に数値サイズを昇順で並べるように注文を書き込むにはどうすればよいですか?

目的の出力の例:

30、32、34、S、M、L

また

S、M、L、30、32、34

4

3 に答える 3

4

FIELD()0検索文字列が見つからない場合に戻ります。したがって:

ORDER BY FIELD(size, 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'), size
于 2012-11-19T13:27:24.740 に答える
2

試す

ORDER BY (CASE WHEN sizes REGEXP '(\d)+' THEN 0 ELSE 1 END) ASC,
         field(sizes, 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL')
于 2012-11-19T13:28:50.830 に答える
0

すべてのサイズを含む列挙型フィールドを使用してみてください。ソート順を維持します。

CREATE TABLE ... (
  ...
  size ENUM ('30', '32', '34', 'S', 'M', 'L')
  ...
);

または

CREATE TABLE ... (
  ...
  size ENUM ('S', 'M', 'L', '30', '32', '34')
  ...
);
于 2012-11-19T13:29:10.380 に答える