日期:2014-05-17  浏览次数:20491 次

SQL自定义排序问题
SELECT   AC_moduleInf.moduleName,AC_moduleInf.moduleId
FROM     AC_accessControl INNER JOIN
            AC_moduleInf ON AC_accessControl.moduleId = AC_moduleInf.moduleId INNER JOIN
            AC_rightGroup ON AC_accessControl.rightGroupId = AC_rightGroup.rightGroupId INNER JOIN
            AC_userInf ON AC_accessControl.rightGroupId = AC_userInf.rightGroupId

结果是

如何写排序能使结果变成


------最佳解决方案--------------------
把order by 写死就行了
 order by  case AC_moduleInf.moduleId when 'AreaMarketingPlanManage' then 1 when 'BillManage' then 2 when 'InStorageManage' then 3 when 'SendGoodsManage' then 4 when 'GetGoodsManage' then 5 when 'ReturnBillManage' then 6 else 7 end
------其他解决方案--------------------
求解答
------其他解决方案--------------------
 AC_moduleInf 表中添加一个排序列,设定顺序即可。
------其他解决方案--------------------
假设你只对这些数据排序,那可以搞一个小表,1列是id,一列是图里面的modulename,然后把你希望的顺序写入这个表,再关联你上面的查询,order 不用这个小表的id即可。
------其他解决方案--------------------
引用:
AC_moduleInf 表中添加一个排序列,设定顺序即可。

我就是不想添加一个排序列,如果不添加排序列还有其他办法吗
------其他解决方案--------------------
引用:
假设你只对这些数据排序,那可以搞一个小表,1列是id,一列是图里面的modulename,然后把你希望的顺序写入这个表,再关联你上面的查询,order 不用这个小表的id即可。

我就是不想添加一个排序列,如果不添加排序列还有其他办法吗?因为我这个数据表不只是这几个数据,不过我需要提取的就是这几个,但是不能分成两个表来
------其他解决方案--------------------
你这种自定义没有任何可以参考的一句,比如按字母排序,按ascii码排序等,所以不能用内置功能。只能靠你自己按照希望的方法来排序。弄一个表是为了以后你的排序规则变了,只需要改那个小表,而不用改动你原有的查询。
------其他解决方案--------------------
我没看出规律,我同意2楼的,加上一个排序列