我的表格中有一个字段,其中包含类别数据,例如
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
有没有办法在查询中执行此操作?如果是这样,如果没有另外的方式呢?
答案 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)