0

我有 1000 多个关键字的表。

表定义关键字keyword_id

[请注意排序规则和字符集是 utf-8]

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

对以上内容进行排序

select * from kword order by keyword + 0 ASC

将字母放在顶部,将数字/特殊字符放在末尾。

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

例子:

Abacus Abaximal A... A... A... .......直到 50 第一个关键字

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

算盘 Abaximal A... A.... Biomatrix A.... .....直到 50 个关键字

知道查询有什么问题,或者当您有这样混合的字符时,还有什么其他方法可以对 mysql 记录进行排序。

问候,

4

1 回答 1

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是一个自动递增的列,用作插入顺序的代理。

于 2013-07-05T12:32:26.730 回答