我需要使用SQL查询按降序对列进行排序 我使用了常规方法
protected $subscribe = [
'App\Listeners\HandleClient',
];
但是无法获得预期结果,下面给出的样本数据
示例数据
预期结果
答案 0 :(得分:1)
使用LEFT
,RIGHT
,CHARINDEX
字符串函数的组合将字符串拆分为两个。然后根据这两个值进行排序。
<强>查询强>
select t.[Id], t.[SerialNo] from(
select [Id], [SerialNo],
left([SerialNo], charindex(' - ', [SerialNo], 1) - 1) [new_col1],
right([SerialNo], charindex(' - ', reverse([SerialNo]), 1) - 1) [new_col2]
from [your_table_name]
)t
order by len(t.[new_col1]) desc, t.new_col1 desc, cast(t.[new_col2] as int) desc;
您还可以更改order by
子句,
order by len(t.[new_col1]) desc, t.[new_col1] desc,
len(t.[new_col2]) desc, t.[new_col2] desc;
<强> Find demo here 强>
答案 1 :(得分:0)
Select * from tableName order by columnName1 desc,SUBSTRING(columnName2,1)*1 desc