在主键和json数组上连接mysql表

yhuiod9q  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(341)

我有一个表,表1有列

id name
1  A
2  B
3  C
4  D

和另一个带有列的表

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

组是一个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))
kyks70gy

kyks70gy1#

尝试此查询

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

gopyfrb32#

错误的参数顺序。根据docs,json应该是第一个参数。

SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT group FROM table2 WHERE id=1), id)

您的json数组包含字符串,而您正在查找 INT . 尝试以下操作:

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

相关问题