【发布时间】:2013-04-10 13:46:08
【问题描述】:
我有下表的条目
+--------------------------------------------+----------+
| 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 |
+--------------------------------------------+----------+
我想按位置按menu_entry 排序。我用以下语句做到这一点
select menu_entry,position from app_names order by menu_entry, position;
但它只按 menu_entry 而不是按位置排序。 这是我的声明的回报:
+--------------------------------------------+----------+
| 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::... 没有正确排序。
【问题讨论】:
-
为什么要存储分隔值?
-
该查询似乎按预期工作。
-
排序正确。
L在R之前。所以LOCKINGDEMO在ROWEDIT之前 -
事实上它完成了它的工作,按 menu_entry 排序......如果你有 2 个 menu_entry 相等,那么它将按位置排序
-
查询似乎正常工作?仅当有两个或多个相同的菜单条目(不在您的列表中)时才考虑该位置
标签: mysql sql-order-by