gpt4 book ai didi

mysql - 如何比较mySql中的两列,其中之一是Json

转载 作者:行者123 更新时间:2023-11-29 20:02:10 25 4
gpt4 key购买 nike

我在 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/仅返回在第二个表 (oc_cart) 中具有匹配值的行

SELECT *
FROM oc_product_option_value acpoa
JOIN oc_cart acc ON acc.option REGEXP concat('"', acpoa.product_option_value_id, '"');

使用 MySQL 保留字(选项)命名列时要小心

编辑:

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, '"');

希望这有帮助

关于mysql - 如何比较mySql中的两列,其中之一是Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com