MariaDB如何按指定FieldId优先级排序后再对FieldValue排序
解决方案
你可以在ORDER BY子句中使用CASE WHEN实现自定义优先级排序,满足你指定field_klsciv50排在最前、同FieldId下按FieldValue升序排列的需求,兼容主流数据库(MySQL/PostgreSQL/SQL Server等)的写法如下:
SELECT FieldId, FieldValue FROM 你的表名 ORDER BY -- 第一排序规则:将field_klsciv50对应的所有行标记为最高优先级 CASE WHEN FieldId = 'field_klsciv50' THEN 0 ELSE 1 END, -- 第二排序规则:所有行按FieldValue的字母升序排列 FieldValue ASC;
特殊场景适配
如果你需要保证非优先的其他FieldId对应的行也按FieldId聚合在一起(避免不同FieldId但FieldValue排序靠前的行穿插),可以指定完整的FieldId自定义排序顺序:
SELECT FieldId, FieldValue FROM 你的表名 ORDER BY CASE FieldId WHEN 'field_klsciv50' THEN 1 -- 优先级最高 WHEN 'field_kijagc5r' THEN 2 -- 第二优先级 WHEN 'field_kbgankim' THEN 3 -- 第三优先级 ELSE 4 -- 其余FieldId默认排在最后 END ASC, FieldValue ASC;
内容的提问来源于stack exchange,提问作者Geover Zamora
相关产品推荐
相关产品推荐

