连接 MYSQL 中没有公共列的表

Joining tables in MYSQL without a common column

我在互联网上搜索了关于如何在 MYSQL 中加入两个 table 而没有公共栏的答案,但没有找到我正在寻找的内容。所以我有两个 table 如下所示。

TABLE 用户详情

id empID   Name
1   001    Rhonda

TABLE请求

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

现在我想做的是我想写一个查询,当我搜索 empId:001 我想要 table returns 我和那个特定的票号EMPID。但这里的问题是没有公共列,其次 Table 请求中该用户的详细信息位于 详细信息 列下。我对如何实现这一目标感到困惑。如果有人可以帮忙,那将是很大的帮助。提前致谢。

固定 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

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