有没有一种优雅的方式可以在MySQL数据库中进行性能良好的自然排序?

例如,如果我有这个数据集:

  • 最终幻想
  • 最终幻想 4
  • 最终幻想 10
  • 最终幻想 12
  • 最终幻想 12: Chains of Promathia
  • 最终幻想 Adventure
  • 最终幻想 Origins
  • 最终幻想 Tactics

除了将游戏名称拆分为组件之外,还有其他elegant种解决方案吗

  • Title: "最终幻想"
  • Number: "12"
  • Subtitle:"Promathia之链"

以确保它们以正确的顺序出现?(4之后10,而不是2之前).

这样做对a**来说是一种痛苦,因为时不时会有另一款游戏打破解析游戏名称的机制(例如《战锤40000》、《詹姆斯·邦德007》)

推荐答案

我想这就是为什么很多东西都是按发布日期排序的.

解决方案可能是在表中为"SortKey"创建另一列.这可能是标题的净化版本,符合您创建的模式,以便于排序或计数器.

Mysql相关问答推荐

Select 同一张表中的结果数?

MYSQL "Like" 正向和反向词序查询

为生日创建 MySQL 索引

如何根据 R 中的价格范围将数据从一列复制到新列?

如何使用同一个表在 2 个字段上左连接

包含 group_contact 的视图的问题

MySQL查询根据同一表中其他字段的值更新表中的字段

MySQL PHP - Select WHERE id = array()?

如何为 php 启用 mysqlnd?

在 WHERE 子句中使用 mysql concat()?

MySQL使用phpmyadmin重新排列列的顺序

什么是全文索引,我应该什么时候使用它?

未找到基表或视图:1146 表 Laravel 5

MySQL 按最佳匹配排序

将所有表和字段更改为 MYSQL 中的 utf-8-bin 排序规则的脚本

多表 Select 与 JOIN(性能)

WAMP 无法访问本地网络 403 Forbidden

连接到 docker-compose mysql 容器会拒绝访问,但运行相同映像的 docker 不会

修改列与更改列

维护 MySQLIN查询中的顺序