ORDER BY 后面可以是 字段名, 如order by id,name 表达式,如 order by id*id 还可以是SELECT COL1,COL2,。。中的列号比如 select id,name,age from tbl1 order by 2, 第二列是 name ,按第二列排序,也就是按 name 10.11 会被先取整。 order by 10.11 也就 order by 10.
<isNotEmpty prepend="and" property="b2bCommision"> <![CDATA[ IFNULL(P.B2B_SUSPEND,0)+IFNULL(P.BSP_SUSPEND,0)<2 ]]> Order By SF_Get_Max_Commision(P.BSP_Suspend,P.B2b_Suspend,BSP_Commision,B2B_Commision) Desc </isNotEmpty> Limit 10其中SF_Get_Max_Commision(P.BSP_Suspend,P.B2b_Suspend,BSP_Commision,B2B_Commision) 这个方法返回的是一个字段的值,并不表示列号,您说的第二种格式“表达式,如 order by id*id ” 这个表达式如果是数字也会按列号来排序吗?还是这个业务逻辑有问题?
你说的这种即是按表达式的结果来排也就是第二种。order by id*id, 或者 order by left(name,1) 都是按表达式的结果来排。对每一行计划表达式的结果,然后排序。和第三种无任何关系。你的SQL语句中哪儿来的 order by 10.11 ?!,提问时请尽量使用原句来问,否则没人能正确的理解的。
后面可以是
字段名, 如order by id,name
表达式,如 order by id*id
还可以是SELECT COL1,COL2,。。中的列号比如
select id,name,age from tbl1 order by 2, 第二列是 name ,按第二列排序,也就是按 name 10.11 会被先取整。 order by 10.11 也就 order by 10.
[ORDER BY {col_name | expr | position}
<isNotEmpty prepend="and" property="b2bCommision">
<![CDATA[
IFNULL(P.B2B_SUSPEND,0)+IFNULL(P.BSP_SUSPEND,0)<2
]]>
Order By SF_Get_Max_Commision(P.BSP_Suspend,P.B2b_Suspend,BSP_Commision,B2B_Commision) Desc
</isNotEmpty>
Limit 10其中SF_Get_Max_Commision(P.BSP_Suspend,P.B2b_Suspend,BSP_Commision,B2B_Commision)
这个方法返回的是一个字段的值,并不表示列号,您说的第二种格式“表达式,如 order by id*id ”
这个表达式如果是数字也会按列号来排序吗?还是这个业务逻辑有问题?