Неверная передача данных в запрос
Имеется запрос вот такого вида:
SELECT t1.va, t1.vv, sss.id
FROM (SELECT
technological_map, JSON_EXTRACT(rpd.technological_map, '$[0].current[*].valuation-tools') as va,
REPLACE(REPLACE(REPLACE(json_extract(JSON_EXTRACT(rpd.technological_map, '$[0].current[*].valuation-tools'), "$[*]"), "[", ""), "]", ""), '"', '') as vv
FROM `rpd`
WHERE id = 1395) as t1, spr_valuation_tools as sss
WHERE sss.id IN (t1.vv)
К сожалению, отдаёт он не все данные. В столбце t1.vv должно быть 4 значения (перечисление id) раньше были просто строкой, в запросе парсим, но в WHERE sss.id IN (t1.vv) строка с перечислением воспринимается как double. Тем самым вместо 4 строк, я получая 1
Как поменять запрос, чтобы он корректно отрабатывал?
Ответы (1 шт):
Автор решения: Novoselov Andrey
→ Ссылка
Пользователь Akina дал верное решение:
От подзапроса получаем строку вида "1, 10, 13, 14" Вот именно так, с пробелами после запятых? Убери эти пробелы нахрен, и тогда
WHERE FIND_IN_SET(sss.id, t1.vv)