Mysql子查询IN子句按JSON值查找

时间:2015-09-25 12:52:32

标签: mysql json subquery

我有两张桌子。一个是product_details,另一个是size。  每种产品都有多种尺寸。我必须为每种产品设定尺寸(如100,125,150)。
但我已经在product_details表中将大小记录保存为JSON值(如[" 1"," 2"," 8"])。  
当我尝试使用IN子句&子查询,我无法获得记录。 请检查此链接:style guide

SELECT po_det.po_det_size as json_str, 
REPLACE(REPLACE(REPLACE(po_det.po_det_size, '[',''),']',''),'"','')) str,
(SELECT GROUP_CONCAT(size.size_name)
 FROM tbl_product_size size
 WHERE size.size_id IN (str)
) AS sizes
FROM tbl_purchase_order_details po_det

请帮我拿到记录。

1 个答案:

答案 0 :(得分:2)

您无法使用in。您可以使用find_in_set()

where find_in_set(size.size_id, str) > 0

我认为您不能在子查询中使用列别名,因此这可能是另一个问题:

where find_in_set(size.size_id, REPLACE(REPLACE(REPLACE(po_det.po_det_size, '[',''),']',''),'"',''))) > 0