如何解决MySQL 将 JSON 列转换为数组并获取页面
取个标题太难了,抱歉!
我拥有的数据库结构是以下列:
- id (int)
- 网址(字符串)
- 内容(字符串)
- created_at(时间戳)
组
- id (int)
- related_page_ids (json)
- domain_id (int)
- created_at(时间戳)
我想要实现的是通过选定的域 ID 检索所有组,然后使用它检索所有相关页面。如果我应该用丑陋的 PHP 和 MysqL 编写它:
$groups = SELECT * FROM groups WHERE domain_id = 1;
foreach($groups as $group){
$pages = SELECT * FROM pages WHERE IN id = implode($group['related_page_ids']);
}
我希望你通过丑陋的例子理解我的目标。
解决方法
如果您有权访问 JSON_TABLE
(MySQL 8 / MariaDB 10.6),则可以在单个查询中完成:
SELECT * FROM pages
WHERE id IN (
SELECT * FROM JSON_TABLE(
(SELECT JSON_ARRAYAGG(related_page_ids) FROM groups WHERE domain_id=1),'$[*][*]' columns(rel_id INTEGER path '$')) AS jt );
该列实际上需要是 JSON
类型(不是 varchar)才能工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。