在mysql记录中进行字母排序的问题

时间:2013-07-05 11:36:54

标签: mysql sql-order-by

我有1000多个关键字的表格。

表定义 关键词 keyword_id

[请注意整理和字符集是utf-8]

关键字可以是字母,UTE-8字符,如“α-抑制剂”和“25 hyrdoglucose”......所以它们是字母,数字和特殊字符的混合。

要对上述内容进行排序

  

按关键字+ 0 ASC

从kword顺序中选择*

将字母保持在最顶层,将数字/特殊字符保留在最后。

当我从html尝试添加新关键字时,新添加的关键字开始在结果集的中间!...

示例:

算盘 Abaximal 一个... 一个... 一个... .......直到50第一个关键字

添加“Biomatrix”后。相同的查询返回

算盘 Abaximal 一个... 一个.... 生物基质 一个.... .....到50个关键字

任何想法是什么错误的查询或什么是其他方式来排序mysql记录当你有这样的混合字符。

此致

1 个答案:

答案 0 :(得分:1)

您指定的排序首先将字母字符放入数字,然后将数字按顺序排序。关于如何对字母字符进行排序没有规则。

如果您希望首先按字母顺序排列字母字符:

order by keyword + 0 ASC, keyword

如果您想以反向插入顺序首先输入字母字符:

order by keyword + 0 ASC, keyword_id desc;

如果您希望首先以反向插入顺序输入字母字符,然后按反向插入顺序输入数字:

order by (left(keyword, 1) between '0' and '9') desc,
         keyword_id desc;

请注意,最后两个假设keyword_id是一个自动递增的列,用作插入顺序的代理。