• SQL实现value为1,2,3转换为值


    表结构如下:

    字典表 common_dict

    订单表 work_order

    现在需要把work_order表里的异常状态查询显示为汉字

    SELECT w.order_no,GROUP_CONCAT(cd.label) AS abnormal_status
        FROM common_dict cd JOIN work_order w ON 1 =1 
     WHERE cd.type LIKE '%abno%'
         AND INSTR(w.abnormal_status,cd.`value`)> 0 
     GROUP BY w.order_no;

    查询结果如下:

    现在需要按这个异常字段查询,如果直接加where条件,代码如下:

    SELECT w.order_no,GROUP_CONCAT(cd.label) AS abnormal_status
        FROM common_dict cd RIGHT JOIN work_order w ON 1 =1 AND cd.type = 'abnormal_status' AND INSTR(w.abnormal_status,cd.`value`)> 0 
       WHERE cd.label in('运输超时')
     GROUP BY w.order_no;

    结果是这样的:

    可以看到,这个订单本来是有3个异常,但是现在只能显示出来1个。所以我们需要进行完善。

    既然关联一次异常表,加where后可以过滤掉数据,那么我们再关联一次,将符合条件的订单再一次关联不带where条件即可。

    代码如下:

    SELECT w.order_no,GROUP_CONCAT(cda.label) AS abnormal_status
        FROM common_dict cd RIGHT JOIN work_order w ON 1 =1 AND cd.type = 'abnormal_status' AND INSTR(w.abnormal_status,cd.`value`)> 0 
                     RIGHT JOIN common_dict cda ON 1 = 1 AND cda.type = 'abnormal_status' AND  INSTR(w.abnormal_status,cda.`value`)> 0 
       WHERE cd.label in('运输超时')
     GROUP BY w.order_no;
    -- group_concat里用的异常表和条件里的一定不能是同一个

    结果如下:

    这样结果才是我们想要的结果,؏؏☝ᖗ乛◡乛ᖘ☝؏؏

  • 相关阅读:
    yum插件yum-fastestmirror
    mysql利用yum安装指定数据存放路径
    快速搭建Seeddms文档管理系统
    Oracle单实例启动多个实例
    HTTP 304状态分析
    Oracle快速克隆安装
    Linux安装SQLite轻量级数据库
    redhat利用yum快速搭建LAMP环境
    将博客搬至CSDN
    GenericServlet 、Servlet和httpServler他们之间的关系
  • 原文地址:https://www.cnblogs.com/huhu-xiaomaomi/p/10830950.html
Copyright © 2020-2023  润新知