Неверная передача данных в запрос

Рейтинг: 1Ответов: 1Опубликовано: 07.02.2023

Имеется запрос вот такого вида:

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Принят

Пользователь Akina дал верное решение:

От подзапроса получаем строку вида "1, 10, 13, 14" Вот именно так, с пробелами после запятых? Убери эти пробелы нахрен, и тогда WHERE FIND_IN_SET(sss.id, t1.vv)