在PRIMARY KEY和JSON数组上加入mysql表



我有一个表,表1有列

id name
1  A
2  B
3  C
4  D

和另一个列为的表

id group
1  ["1","3"]
2  ["2","3"]
3  ["1","4"]

group是一个JSON类型的字段。我想根据第二个表组从第一个表中获取记录。

SELECT * FROM table1 WHERE id IN (SELECT group FROM table2 WHERE id=1);

我尝试了以下查询,但没有得到结果。

SELECT * FROM table1 WHERE JSON_CONTAINS(id, (SELECT group FROM table2 WHERE id=1)) 
  1. 参数顺序错误。根据文档,JSON应该是第一个参数。

    SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT group FROM table2 WHERE id=1), id)
    
  2. 您的JSON数组包含字符串,而您正在寻找INT的id。试试这样的东西:

    SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT `group` FROM table2 WHERE id=1), JSON_QUOTE(CAST(id as CHAR(50))))

尝试此查询

SELECT * FROM table1 WHERE id IN(SELECT JSON_EXTRACT(group) As id FROM table2 WHERE id= 1)

最新更新