2 回答
TA贡献1848条经验 获得超2个赞
您可以使用 MySQL 查询 JSON 数据类型(如果版本 > 5.7),因此您可以通过单个查询轻松完成所有操作
尝试一下
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
调整名称your_json_column。另外,我假设您想要搜索name2特定的name1,因此我的WHERE子句,如果它是错误的假设,请将其删除。
TA贡献2041条经验 获得超4个赞
好的,它可以工作了,非常感谢 Thomas G 提出的解决方案和 JNevill 的一些提示(干杯!):
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 的名称数据,并且因为我不知道在查询之前检索的名称,所以我无法使用 Thomas 提出的WHERE子句G。
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报