如何将API获取的JSON数据与guide表关联查询获取指定字段?
解决方案
可以将JSON数据解析为临时表,再与guide表关联查询,以下是主流数据库的实现方式:
1. MySQL(5.7及以上版本)
使用JSON_TABLE函数解析JSON为临时表,通过guide_id关联查询:
SELECT g.guide_id, g.name, j.uuid FROM guide g JOIN JSON_TABLE( '[ {"guide_id": 1, "uuid": "AAAA"}, {"guide_id": 2, "uuid": "BBBB"}, {"guide_id": 3, "uuid": "CCCC"}, {"guide_id": 4, "uuid": "DDDD"} ]', '$[*]' COLUMNS( guide_id INT PATH '$.guide_id', uuid VARCHAR(255) PATH '$.uuid' ) ) j ON g.guide_id = j.guide_id;
2. PostgreSQL
使用json_to_recordset(或jsonb_to_recordset)解析JSON,关联guide表:
SELECT g.guide_id, g.name, j.uuid FROM guide g JOIN json_to_recordset( '[ {"guide_id": 1, "uuid": "AAAA"}, {"guide_id": 2, "uuid": "BBBB"}, {"guide_id": 3, "uuid": "CCCC"}, {"guide_id": 4, "uuid": "DDDD"} ]' ) AS j(guide_id INT, uuid TEXT) ON g.guide_id = j.guide_id;
3. SQL Server
使用OPENJSON函数解析JSON,关联查询:
SELECT g.guide_id, g.name, j.uuid FROM guide g JOIN OPENJSON( '[ {"guide_id": 1, "uuid": "AAAA"}, {"guide_id": 2, "uuid": "BBBB"}, {"guide_id": 3, "uuid": "CCCC"}, {"guide_id": 4, "uuid": "DDDD"} ]' ) WITH ( guide_id INT '$.guide_id', uuid VARCHAR(255) '$.uuid' ) j ON g.guide_id = j.guide_id;
以上语句均会返回你期望的查询结果,仅保留guide表中存在的guide_id对应的记录。
内容的提问来源于stack exchange,提问作者Erdinc
相关产品推荐
相关产品推荐

