我正在为一个销售内衣的客户做一个电子商务网站,我已经为他们写了一个文胸尺寸的选择器,但他们今天回来给我一个小问题。
对于胸围尺寸,AA小于A,所以它应该出现在图表之前,但是当我按照尺寸使用MySQL顺序时,显然它先放A,然后放AA,然后B等。
有没有一种简单的方法可以让MySQL首先订购AA,然后是A,B等?
答案 0 :(得分:4)
我会在你的表中添加另一列“orderid”(INTEGER甚至TINYINT),然后按该列排序。
答案 1 :(得分:3)
假设A
是唯一可能重复的字母,您可以这样做:
SELECT *
FROM bra
ORDER BY
LENGTH(size) DESC, size
但更好的解决方案是创建一个转换表,它可以存储所有可能的尺寸(欧洲,日本等),包括你可以订购的度量标准。
您可以使用它来构建转换图表,并在人的首选系统中显示尺寸。
答案 2 :(得分:1)
在“A”之前放置和强调“_A”工作并且可以接受,你可以将其剥离用于显示目的吗? (不确定这是否有效)
或者从胸罩尺寸字段中选择一个分类代码进行分类。
答案 3 :(得分:0)
您可以按照从列派生的值进行排序。你可以使用CASE 运算符指定顺序:...
这将是您的选择:
select id, val
from test
order by
case val
when 'AA' then 1
when 'A' then 2
when 'B' then 3
END
首先排序AA,然后排序A然后B:)
答案 4 :(得分:0)
我更愿意引入一列sequenceNo
来存储服务器上的订单。想象一下其他采摘者
答案 5 :(得分:0)
为订购
创建一个查找表Table bra_order
id integer auto_increment not null
bra_size char(3)
sort_id integer not null
然后执行以下操作:
SELECT i.* FROM inventory
LEFT JOIN bra_order b ON (b.bra_size = i.bra_size)
ORDER BY b.sort_id