Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有混合数据类型的mysql自定义order by_Mysql_Sql Order By - Fatal编程技术网

具有混合数据类型的mysql自定义order by

具有混合数据类型的mysql自定义order by,mysql,sql-order-by,Mysql,Sql Order By,在下面的mysql查询中,我使用了一个自定义的ORDERBY语句,因此我可以按特定顺序而不是按字母顺序显示各种大小: 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') 如果某些产品

在下面的mysql查询中,我使用了一个自定义的ORDERBY语句,因此我可以按特定顺序而不是按字母顺序显示各种大小:

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

未找到搜索字符串时返回
0
。因此:

ORDER BY FIELD(size, 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL'), size
试一试


您应该尝试使用包含所有大小的枚举字段。它将维持其排序顺序

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


做一个非常难看的
案例
可能行得通……但是当数据添加到此表时会发生什么呢?如何更新排序顺序?非常酷的答案。创新地使用
FIELD()
来分隔字符串和数字
CREATE TABLE ... (
  ...
  size ENUM ('30', '32', '34', 'S', 'M', 'L')
  ...
);
CREATE TABLE ... (
  ...
  size ENUM ('S', 'M', 'L', '30', '32', '34')
  ...
);