当前位置:  开发笔记 > 后端 > 正文

你如何在mysql中按标题排序,忽略单词"the"?

如何解决《你如何在mysql中按标题排序,忽略单词"the"?》经验,为你挑选了2个好方法。

我有一份我按字母分组的电影列表.当然,以字母"T"开头的电影大约有80%的电影以"The"开头.诸如"黑暗骑士"之类的电影应出现在"D"列表中,并且最好也出现在"T"中.我能以任何方式做到这一点吗?

我在WHERE子句中使用以下代码来显示以某个字母开头的电影,忽略"the",但这也有一个方便的副作用,就是让"黑暗骑士"等电影出现在字母"D"中, "T".

WHERE movie_title REGEXP CONCAT('^(the )?', '$letter')

当我回应数据库中的所有电影时,我想实现这一点.



1> carl..:

如果您要经常执行此查询,则需要在表中使用"已排序"名称创建单独的字段.使用正则表达式或其他操作使MySQL无法利用索引.

因此,最简单和最有效的解决方案是添加一个movie_title_short字段,其中包含movie_title"The"或"A".一定要在movie_title_short字段中添加索引!



2> nickf..:

正如Carl所说,我将它构建到自己的可索引字段中,以避免每次都计算它.我建议以稍微不同的方式进行,以避免冗余.

movies (id, name, namePrefix)

例如:

| Dark Knight        | The |
| Affair To Remember | An  |
| Beautiful Mind     | A   |

这样您就可以用两种不同的方式显示这些电影:"name, namePrefix"或者"namePrefix name"可以相应地进行排序.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有