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

表结构以下:spa

字典表 common_dictcode

 

订单表 work_orderorm

如今须要把work_order表里的异常状态查询显示为汉字blog

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;

查询结果以下:class

如今须要按这个异常字段查询,若是直接加where条件,代码以下:im

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;

结果是这样的:d3

能够看到,这个订单原本是有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里用的异常表和条件里的必定不能是同一个

结果以下:

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

相关文章
相关标签/搜索