mysql的orde by 按照指定状态顺序排序

本文介绍了一种基于贷款订单状态的排序SQL查询方法,通过CASE WHEN语句将特定的状态ID映射到排序值,实现了从审核中到已逾期的定制化排序。此查询还包含了多种过滤条件,如订单ID、关联订单ID、用户名等,以便于精确查找和管理贷款记录。
要求按照以下顺序排序
审核中->审核拒绝->待放款->放款失败->待还款->已结清->已逾期

{
id:80,
label:'审核中'
},{
id:100,
label:'审核拒绝'
},{
id:90,
label:'待放款'
},{
id:170,
label:'放款失败'
}
,{
id:175,
label:'待还款'
}
,{
id:200,
label:'已结清'
}
,{
id:180,
label:'已逾期'
}

实现sql

  select
         id,
         phone,
         user_name AS userName,
         cid,
         product_id AS productId,
         product_name AS productName,
         status,
         repayment_status AS repaymentStatus,
         order_id AS orderId,
         associated_order_id AS associatedOrderId,
         apply_time AS applyTime,
         due_time AS dueTime,
         repayment_time AS repaymentTime,
         amount,
         product_amount AS productAmount,
         paid_amount AS paidAmount,
         actual_amount AS actualAmount,
         term,
         term_unit AS termUnit
        from
        loan_order
        <where>
            <if test="orderId != null and orderId !=''">
                order_id = #{orderId}
            </if>
            <if test="associatedOrderId != null and associatedOrderId !=''">
                and associated_order_id = #{associatedOrderId}
            </if>
            <if test="userName != null and userName !=''">
                and user_name = #{userName}
            </if>
            <if test="status != null">
                and status = #{status}
            </if>
            <if test="repaymentTime != null">
                and repayment_status = #{repaymentTime}
            </if>
            <if test="phone != null and phone != ''">
                and phone = #{phone}
            </if>
            <if test="cid != null and cid != ''">
                and cid = #{cid}
            </if>
            <if test="productName != null and productName != ''">
                and product_name = #{productName}
            </if>
            <if test="startApplyTime != null">
                AND DATE_FORMAT(apply_time, '%Y-%m-%d') >= DATE_FORMAT(#{startApplyTime}, '%Y-%m-%d')
            </if>
            <if test="endApplyTime != null">
                AND DATE_FORMAT(apply_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{endApplyTime}, '%Y-%m-%d')
            </if>
            <if test="startRepaymentTime != null">
                AND DATE_FORMAT(repayment_time, '%Y-%m-%d') >= DATE_FORMAT(#{startRepaymentTime}, '%Y-%m-%d')
            </if>
            <if test="endRepaymentTime != null">
                AND DATE_FORMAT(repayment_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{endRepaymentTime}, '%Y-%m-%d')
            </if>
        </where>

        order by (CASE
        WHEN `status` = 80  THEN 0
        WHEN `status` = 100 THEN 1
        WHEN `status` = 90  THEN 2
        WHEN `status` = 170 THEN 3
        WHEN `status` = 175 THEN 4
        WHEN `status` = 200 THEN 5
        WHEN `status` = 180 THEN 6
        ELSE 7 END) asc

 

转载于:https://www.cnblogs.com/mlfz/p/10730318.html

品牌表 (brand) 字段名 类型 说明 id INT(11) 品牌 ID(主键) brand_nam e VARCHAR(50) 品牌名称(唯一索引) sort_orde r INT(11) 排序值(越大越优先) is_visibl e TINYINT(1) 是否显示(0:隐藏 1:显示) updated_a t DATETIME 更新时间 2. 商品标签表 (product_tag) 字段名 类型 说明 id INT(11) 标签 ID(主键) tag_name VARCHAR(50) 标签名称(唯一索引) tag_descriptio n VARCHAR(255) 标签说明(允许为空) sort_order INT(11) 排序值(越大越优先) is_visible TINYINT(1) 是否显示(0:隐藏 1:显示) updated_at DATETIME 更新时间 3. 规格模板表 (spec_template) 字段名 类型 说明 id INT(11) 模板 ID(主键) template_nam e VARCHAR(50) 模板名称(唯一索引) sort_order INT(11) 排序值(越大越优先) is_visible TINYINT(1) 是否显示(0:隐藏 1:显示) updated_at DATETIME 更新时间 4. 规格明细表 (spec_detail) 字段名 类型 说明 id INT(11) 规格 ID(主键) template_i d INT(11) 关联 spec_template.id(外键) spec_name VARCHAR(50) 规格名称(如"颜色","尺码") spec_value s TEXT 规格值(逗号分隔,如"红,蓝") sort_order INT(11) 排序值(越大越优先) 任务 1:品牌管理模块(35 分) 功能要求(对应【品牌管理.png】和【编辑品牌.png】) 1. 品牌列表展示 使用 Element UI 表格展示数据 列顺序:ID、品牌名称、排序值、是否显示、更新时间、操作列 操作列包含"编辑"和"删除"按钮(使用 Element UI 图标) 2. 添加/编辑品牌弹窗 实现【编辑品牌.png】的表单布局 字段:品牌名称(输入框)、排序值(数字输入框)、是否显示(开关组件) 弹窗标题动态显示:"添加品牌" 或 "编辑品牌" 3. 删除品牌功能 实现【删除品牌.png】的确认对话框 使用 Element UI 的 MessageBox 确认框 验证要求: 品牌名称:必填、唯一性校验(实时检查重复) 排序值:数字类型、范围 0-100 删除时需二次确认 共 页 第 页 任务 2:标签管理模块(40 分) 功能要求(对应【商品标签.png】和【编辑标签.png】) 1. 标签搜索功能 顶部搜索框(Element UI Input 组件) 支持按标签名称模糊查询 实时刷新表格数据 2. 标签表格展示 列顺序:序号、标签名称、标签说明、排序值、是否显示、更新时间、操作列 标签说明为空时显示"-" 3. 添加/编辑标签弹窗 实现【编辑标签.png】的表单布局 字段:标签名称(输入框)、标签说明(文本框)、排序值(数字输入框)、是否显示(开 关) 验证要求: 标签名称:必填、长度 2-20 字符 排序值:自动填充默认值 10 标签说明:最多 255 字符 任务 3:数据交互实现(25 分) 功能要求 1. 品牌 API 对接 GET /api/brands 获取品牌列表 POST /api/brands 创建品牌 PUT /api/brands/{id} 更新品牌 DELETE /api/brands/{id} 删除品牌 2. 标签 API 对接 GET /api/tags?name=关键词 搜索标签 POST /api/tags 创建标签 3. 实时验证 品牌名称唯一性校验(使用 axios 异步请求) 表单提交前验证(Element UI 表单验证) 布局要求: 共 页 第 页 实现方式 1:使用若依低代码平台:配置表单生成器 实现方式 2:自定义开发:使用 Element UI 的 Form 组件 注意:可使用任何工具,任何架构,功能实现基本一致,界面基本一致。 提交:效果截图,关键代码截图,前端代码压缩文件,后端代码压缩文件。
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值