首页 > 解决方案 > 在没有公共列的情况下连接 MYSQL 中的表

问题描述

我已经搜索了有关如何在没有公共列的情况下在 MYSQL 中加入两个表的答案,但没有找到我正在寻找的确切内容。所以我有两个表,如下所示。

TABLE用户详情

id empID   Name
1   001    Rhonda

表请求

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

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

标签: mysqlsqljsonmysql-8.0

解决方案


->>在修复 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.empIDCONVERT(u.empID USING utf8)orCONVERT(u.empID USING latin1)以获取正确的排序规则


推荐阅读