首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql order by integer和varchar

mysql order by integer和varchar
EN

Stack Overflow用户
提问于 2010-10-22 16:59:34
回答 1查看 665关注 0票数 3

我有一个sizes(VARCHAR)字段。大小可以有int和字符串值,例如(1,2,3-4,X,XL,M,...)。

当我使用mysql的normal order by函数时,输出如下: 1,10,11,2,44-46,L,M,S,XL,XXL

不包含数字的值按照我想要的方式进行排序。(我知道这些值是作为字符串排序的,并且结果是正确的)。但是我想这样排序: 1,2,3,3-4,L,M,S,XL,XXL

还有一个更“合乎逻辑”的顺序。

使用msql可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-22 17:40:06

最优雅和灵活的解决方案是将大小放在一个单独的表中,并使用连接。例如,表定义可能如下所示:

代码语言:javascript
复制
CREATE TABLE sizes (
  id INT PRIMARY KEY AUTO_INCREMENT,
  ord INT,
  name VARCHAR(8)
);

在之前使用大小的那些表中,您应该使用size_id:

代码语言:javascript
复制
CREATE TABLE tshirts (
  id INT PRIMARY KEY AUTO_INCREMENT,
  colour VARCHAR(16),
  price INT,
  size_id INT
);

当你查询的时候,你用sizes连接它,order by sizes.ord并向用户显示sizes.name,如下所示:

代码语言:javascript
复制
SELECT colour, price, sizes.name FROM tshirts
  JOIN sizes ON tshirts.size_id = sizes.id
  ORDER BY sizes.ord;

这样,大小的顺序可以独立于名称,并且您仍然可以使用单独的表来管理它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3995302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档