2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用 MySQL 查詢 JSON 數(shù)據(jù)類型(如果版本 > 5.7),因此您可以通過單個(gè)查詢輕松完成所有操作
嘗試一下
SELECT t1.name1, t1.name2, t2.status
FROM
(
SELECT JSON_EXTRACT(your_json_column, "$.name1") AS name1,
JSON_EXTRACT(your_json_column, "$.name2") AS name2
FROM table1
WHERE JSON_EXTRACT(your_json_column, "$.name1") = 'info'
) t1
INNER JOIN table2 t2 ON t2.`name`=t1.name2
調(diào)整名稱your_json_column。另外,我假設(shè)您想要搜索name2特定的name1,因此我的WHERE子句,如果它是錯(cuò)誤的假設(shè),請將其刪除。

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
好的,它可以工作了,非常感謝 Thomas G 提出的解決方案和 JNevill 的一些提示(干杯?。?/p>
SELECT t1.info1, t1.info2, t1.info3, t1.other_name, t2.status FROM (
SELECT
field1 AS info1,
field2 AS info2,
field3 AS info3,
CASE
WHEN JSON_VALUE(JSON_KEYS(json_names_column),"$[0]") = 'name1'
THEN JSON_VALUE(JSON_KEYS(json_names_column),"$[1]")
ELSE JSON_VALUE(JSON_KEYS(json_names_column),"$[0]")
END
AS other_name
FROM table1
WHERE id = 345
) t1 INNER JOIN table2 t2 ON t1.other_name = t2.name;
請注意,我使用 JSON_VALUE(JSON_KEYS()) 而不是 JSON_EXTRACT,只返回所需的名稱作為 t1 的名稱數(shù)據(jù),并且因?yàn)槲也恢涝诓樵冎皺z索的名稱,所以我無法使用 Thomas 提出的WHERE子句G。
- 2 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)