mysql排序不正确
我有下表的条目mysql排序不正确,mysql,sql-order-by,Mysql,Sql Order By,我有下表的条目 +--------------------------------------------+----------+ | menu_entry | position | +--------------------------------------------+----------+ | ADMINISTRATION::USERMANAGEMENT::USER | 2 | | DEMO::CH
+--------------------------------------------+----------+
| menu_entry | position |
+--------------------------------------------+----------+
| ADMINISTRATION::USERMANAGEMENT::USER | 2 |
| DEMO::CHART::EXAMPLE | 1 |
| PROJMGMT::PROJSTRG::LOP | 2 |
| ADMINISTRATION::USERMANAGEMENT::RIGHTSMMGT | 1 |
| PROJMGMT::PROJSTRG::MEETINGS | 1 |
| DEMO::GRID::CELLEDIT | 1 |
| DEMO::GRID::ROWEDIT | 3 |
| DEMO::DATAMGMT::GROUPING | 1 |
| DEVELOPER::APPS::ADDAPP | 2 |
| DEVELOPER::APPS::APPTEST | 1 |
| DEMO::GRID::LOCKINGDEMO | 4 |
| DEMO::GRID::FILTERDEMO | 2 |
+--------------------------------------------+----------+
我想按菜单项
第一位和第二位进行订购。我用下面的陈述来说明这一点
select menu_entry,position from app_names order by menu_entry, position;
但它只按菜单项排序,不按位置排序。
以下是我的声明:
+--------------------------------------------+----------+
| menu_entry | position |
+--------------------------------------------+----------+
| ADMINISTRATION::USERMANAGEMENT::RIGHTSMMGT | 1 |
| ADMINISTRATION::USERMANAGEMENT::USER | 2 |
| DEMO::CHART::EXAMPLE | 1 |
| DEMO::DATAMGMT::GROUPING | 1 |
| DEMO::GRID::CELLEDIT | 1 |
| DEMO::GRID::FILTERDEMO | 2 |
| DEMO::GRID::LOCKINGDEMO | 4 |
| DEMO::GRID::ROWEDIT | 3 |
| DEVELOPER::APPS::ADDAPP | 2 |
| DEVELOPER::APPS::APPTEST | 1 |
| PROJMGMT::PROJSTRG::LOP | 2 |
| PROJMGMT::PROJSTRG::MEETINGS | 1 |
+--------------------------------------------+----------+
如您所见,DEMO::GRID::。。。未正确排序。您可能应该按提取第一个
::
左侧字符串部分的子字符串索引(菜单项“:”,1)
排序,或者按子字符串索引(菜单项“:”,2)
排序,具体取决于您在执行以下操作:
select menu_entry, position
from app_names
order by
SUBSTRING_INDEX(menu_entry, '::', 1), position;
请参阅fiddle。为什么要存储分隔值?该查询似乎按预期工作。排序正确<代码>L位于
R
之前。所以,LOCKINGDEMO
在ROWEDIT
之前,实际上它完成了它的工作,按菜单项排序。。。如果有两个菜单项相等,那么它将按位置排序查询是否正常工作?只有当列表中没有两个或多个相同的菜单项时,才会考虑该位置