我在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
答案 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, '"');
希望这个帮助