如何比较mySql中的两列Json

时间:2016-11-08 11:07:57

标签: mysql json

我在mysql数据库中有两个表,我想在另一个表中比较两个列,第一个表名“oc_product_option_value”有列:

product_option_value_id   

20
21
22
23
50
100

和第二个表“oc_cart”有cuolomn

option

{"20":"228","24":"229"}

我想比较两个表并从第一个表中选择数据,其中第二个表中的“product_option_value_id”。

我试过了:

SELECT * FROM oc_product_option_value 
WHERE product_option_id IN
(SELECT REPLACE(REPLACE(REPLACE(REPLACE(OPTION,'{',''),'}',''),':',','),'"','')
as `option` FROM `oc_cart`)

并且没有结果

* columns Structure 

"product_option_value_id" is int 
"option" is TEXT

1 个答案:

答案 0 :(得分:0)

Heum ..不确定它会按照您的预期行事,但我认为这是第一步:

1 /仅返回第二个表(oc_cart

中具有匹配值的行
SELECT *
FROM oc_product_option_value acpoa
JOIN oc_cart acc ON acc.option REGEXP concat('"', acpoa.product_option_value_id, '"'); 

注意使用保留的MySQL字(option

命名列

编辑:

2 /如果你想显示"结果"比较后final_kept_column以显示" value_id"或" option"即使oc_cart中没有匹配值,您也可以尝试这样的话:

SELECT *, 
    CASE WHEN acc.option IS NULL 
          THEN acpoa.product_option_value_id 
          ELSE 0 
    END AS final_kept_column
FROM oc_product_option_value acpoa
LEFT JOIN oc_cart acc ON acc.option REGEXP concat('"', acpoa.product_option_value_id, '"'); 

希望这个帮助