在没有公用列的情况下在MYSQL中联接表

时间:2020-06-22 08:04:45

标签: mysql sql json mysql-8.0

我已经搜索了有关如何在MYSQL中联接两个表的答案,而在Internet上却没有共同的专栏,但没有找到我所要查找的确切信息。所以我有两个表,如下所示。

TABLE userDetails

id empID   Name
1   001    Rhonda

TABLE请求

id ticketNo  Details
1  00000123  {"userDetails":{"id":"1", "empID":"001", "Name":"Rhonda"}

现在我想做的是编写一个查询,当我搜索empId:001时,我希望该表以该票证号返回该EMPID。但是这里的问题是,没有公共列,其次,表请求中该用户的详细信息位于详细信息列下。我对如何实现这一目标感到困惑。如果有人可以提供帮助,那将是极大的帮助。预先感谢。

1 个答案:

答案 0 :(得分:2)

在修复JSON列格式(例如)后,可以在JOIN条件内使用->>运算符 将其转换为{"userDetails":{"id":"1", "empID":"001", "Name":"Rhonda"}}的形式:

SELECT ticketNo 
  FROM request r
  JOIN userDetails u
    ON r.Details ->> '$.userDetails.empID' = u.empID

Demo

更新:也许,您可以尝试将u.empID替换为CONVERT(u.empID USING utf8)CONVERT(u.empID USING latin1),以获取正确的排序规则