首页 > 解决方案 > 使用 json 列连接表

问题描述

我想将我的 json 列与用户表连接起来,有没有办法在 mariadb 中使用查询来达到这个目的?

文档表

用户表

我希望它是这样的

标签: phplaravelmariadb

解决方案


您可以使用JSON_CONTAINS执行以下操作:

SELECT * FROM table1 JOIN table2 ON 
      JSON_CONTAINS(table1.doc_sharewith, JSON_QUOTE(table2.id))

或在 Laravel 中:

Table1::join('table2', \DB::raw('JSON_CONTAINS(table1.doc_sharewith, JSON_QUOTE(table2.id))'), '=', 1)

请注意,这样的连接将非常慢,因为它无法使用索引,因此为了提高效率,您应该切换到规范化数据结构或像 MongoDB 这样的专用 JSON 数据库


推荐阅读