2021-08-03
sql查询多字段排序问题在项目中的实践问题
项目背景:
在项目中需要把数据中心机柜里面的设备所在位置取出来使用形成excel表格
设备所在机柜位置需要满足以下三个条件
1.柜列字母A-Z排序
2.柜位数字从小到大排序
3.U位置从小到大
SQL查询时无法按照以上条件进行排序输出

字段U数排序不生效,正确的排序结果应该是

sql查询语句如下:
SELECT DISTINCT
t2.`设备名称`,
"业务域" AS '所属区域',#IF(
IF
(
t2.minu = t2.maxu,
t2.minu,
CONVERT ( substring_index( CONCAT( t2.minu, "-", t2.maxu ), '-', 2 ), CHAR ( 255 ) )
) AS 'u数',
t3.`柜列`,
t3.`柜位`,
t3.`机房`
FROM
(
(
SELECT
t.设备名称,
max( t.`U数` ) maxu,
min( t.`U数` ) minu
FROM
(
SELECT DISTINCT
t1.`设备名称`,
t1.`U数`,
t1.`柜列`,
t1.`柜位`,
t1.`机房`
FROM
t1
ORDER BY
t1.`设备名称`,
t1.`U数`
) t
WHERE
1 = 1
GROUP BY
t.设备名称
) t2,
(
SELECT DISTINCT
t1.`设备名称`,
t1.`U数`,
t1.`柜列`,
t1.`柜位`,
t1.`机房`
FROM
t1
ORDER BY
t1.`设备名称`,
t1.`U数`
) t3
)
WHERE
1 = 1
AND t2.`设备名称` = t3.`设备名称`
ORDER BY CONVERT(`柜列` USING gbk) asc,`柜位` asc,`u数` asc;
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


评论
