有没有一种方法可以让我查询一个mysql并内部连接一个json数据


Is there a way I can query a mysql and inner join a json data together?

假设我有一个mysql表调用用户:

╔════════╦══════════╗
║ Userid ║ Username ║
╠════════╬══════════╣
║   1    ║  Apple   ║
╚════════╩══════════╝

我有一个json文件(1.json):

{
    "Desc": "Hi I am apple",
    "Age": 10,<br>
}

我如何使用php进行内部连接,将这两个数据链接到

╔════════╦══════════╦═══════════════╦═════╗
║ Userid ║ Username ║     Desc      ║ Age ║
╠════════╬══════════╬═══════════════╬═════╣
║   1    ║  Apple   ║ Hi I am apple ║ 10  ║
╚════════╩══════════╩═══════════════╩═════╝

或者有没有更好的方法可以构建数据库进行查询

原因是,从长远来看,会有很多记录,通过拆分为json和mysql,mysql可以让我轻松地搜索数据,只在需要时检索信息。有人能告诉我这样做最好吗?提前感谢!

如果我理解正确,JSON数据可以是动态的,并且有多个不同的字段。

在SQL/DB中直接实现这一点的一种方法是使用称为实体属性值模型的方案,例如,wordpress使用该模型来存储自定义动态字段。它提供了很大的灵活性,但效率不是很高。

另一种方法是直接使用JSON数据作为额外的字段,如:

╔════════╦══════════╦══════════════════════════════════════════════════╦
║ Userid ║ Username ║     JSON                                         ║
╠════════╬══════════╬══════════════════════════════════════════════════╬
║   1    ║  Apple   ║ {"Desc":"Hi I am apple","Age":"10"}              ║
╚════════╩══════════╩══════════════════════════════════════════════════╩

并查询类似于的表格(例如获取具有username=userage=10的用户)

SELECT UserId, UserName FROM Table
WHERE UserName = 'user'
AND JSON LIKE '%"Age":"10"%'

注意,即使是数值也应该作为字符串保存在json中,以便统一处理

如果您的JSON数据不复杂或嵌套,但简单的key-value对和使用LIKE(或REGEX)子句可以是有效的,那么这也是灵活的

(ps这种方法也被wordpress使用,使用php串行数据而不是JSON数据,但有相同的区别)