mysql使用GROUP_CONCAT子查詢多字符返回

需求描述
一個訂單有多個類型,數據庫保存type_ids字段爲多個id用,隔開,查詢某個訂單所屬類型詳情時,返回類型對應的名稱,即返回type_names爲多個名稱用,隔開。

解決方案
如下:

 SELECT i.id, order_id,type_ids,
(SELECT GROUP_CONCAT(t.`name`) FROM t_gas_type t WHERE FIND_IN_SET(t.id,type_ids)) AS type_names
FROM t_inspect i

在一開始的應用中,使用瞭如下的解決方案,但是結果返回不正確。

 SELECT i.id, order_id,gas_type_ids,
(SELECT GROUP_CONCAT(t.`name`) FROM t_gas_type t WHERE t.id in(gas_type_ids)) AS gas_type_names
FROM t_inspect i

理論上返回
測試1,測試2,測試3
實際只返回
測試1

問題原因
在mysql中 in 裏面如果是字符串的話,會自動轉化成int類型,內部使用瞭如下方法:
CAST(‘1,2,3’ AS INT) 只返回了1,最終查詢結果也只會返回id=1的名稱信息。

參考文獻 解決mysql查詢,in條件參數爲帶逗號的字符串,查詢結果錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章