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

Posted

技术标签:

【中文标题】如何比较mySql中的两列其中之一是Json【英文标题】:How to compare two columns in mySql one of them Json 【发布时间】:2016-11-08 11:07:57 【问题描述】:

我在 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】:

嗯.. 不确定它会达到你的预期,但我认为这是第一步:

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

希望有帮助

【讨论】:

以上是关于如何比较mySql中的两列其中之一是Json的主要内容,如果未能解决你的问题,请参考以下文章

如何通过比较两个表中的两列来更新表中的列

如何比较数据框中的两列,检查它们之前是不是存在?

如何在 Visual Studio 2019 的 Datagrid 视图中连接 MySQL DataTable 中的两列?

如何比较pyspark中两个不同数据帧中的两列

基于MySql中的两列删除重复记录[重复]

我想比较具有不同日期格式的两列