2016-11-08 42 views
0

我在MySQL數據庫中的兩個表,我想他們每個人的兩列在不同的表第一個表名比較「oc_product_option_value」有柱:如何比較兩列在MySQL中其中之一的Json

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

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

希望得到這個幫助

+0

對您有幫助嗎? – Delphine