如何比较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 中的两列?