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