ПРИСОЕДИНЯЙТЕСЬ к таблице MySQL на PRIMARY KEY и массиве JSON - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть Таблица, таблица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)) 

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018
  1. Неправильный порядок аргументов.Согласно документам JSON должен быть первым аргументом.

    SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT group FROM table2 WHERE id=1), id)
    
  2. Ваш массив JSON содержит строки, в то время как вы ищете идентификатор, равный INT.Попробуйте что-то вроде этого:

    SELECT * FROM table1 WHERE JSON_CONTAINS((SELECT `group` FROM table2 WHERE id=1), JSON_QUOTE(CAST(id as CHAR(50))))
0 голосов
/ 06 декабря 2018

Попробуйте этот запрос

SELECT * FROM table1 WHERE id IN(SELECT JSON_EXTRACT(group) As id FROM table2 WHERE id= 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...