我有一个表,表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))
-
参数顺序错误。根据文档,JSON应该是第一个参数。
SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT group FROM table2 WHERE id=1), id)
-
您的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)