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

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

我有一个表,表1有列

  1. id name
  2. 1 A
  3. 2 B
  4. 3 C
  5. 4 D

和另一个带有列的表

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

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

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

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

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

kyks70gy1#

尝试此查询

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

gopyfrb32#

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

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

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

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

相关问题