MySQL SQL对字段中的某些单词进行排序

时间:2011-12-21 11:14:37

标签: php mysql sql

我的表格中有一个字段,其中包含类别数据,例如

Computer > Mouse
Computer > Keyboard
Archived Game > Strategy
PS3 > Game > sports

当我把它们从桌子上拉出来时,除了最后一个单词之外我使用了:

$category = trim(substr($databack20[main_category], strrpos($databack20[main_category], '>') + 1));

完美无缺。

我需要按名称顺序将它们拉出表格

所以目前我得到了:

Archived Game > Strategy
Computer > Keyboard
Computer > Mouse
PS3 > Game > Sports

但我需要的顺序是:

Keyboard
Mouse
Sports
Strategy

有没有办法在查询中执行此操作?如果是这样,如果没有另外的方式呢?

4 个答案:

答案 0 :(得分:2)

虽然我同意答案,但您应该将字符串拆分为单独的字段,您可以按照自己的喜好对其进行排序,但性能不会很好。试试这个

ORDER BY LCASE(RIGHT(main_category, LOCATE('>', REVERSE(main_category) ) ))

答案 1 :(得分:1)

SELECT
  *
FROM
(
  <your current query>
)
  AS data
ORDER BY
  field_name_1,
  field_name_2

答案 2 :(得分:0)

  

我的表格中有一个字段,其中包含类别数据,例如

这就是你做错了。
应该使用更智能的设计来实现目录层次结构。

数据库设计的基本规则是字段中的数据应该是 atomic ,即只代表一个问题。
混合问题很快就会导致现场故障。

您必须将每个目录节点存储在单独的字段中。因此,您将能够按任何级别节点进行排序。您可能还希望添加“父”字段,以将节点与父节点链接。

答案 3 :(得分:-1)

在纯SQL中无法进行此类排序,我认为您最好使用sortusort之类的PHP排序功能来按您希望的方式对列表进行排序。