表結構以下: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裏用的異常表和條件裏的必定不能是同一個
結果以下:
這樣結果纔是咱們想要的結果,؏؏☝ᖗ乛◡乛ᖘ☝؏؏