SELECT *
FROM a
WHERE a.re_id = 3443499
AND a.id IN
(
SELECT b.rsp_id FROM b
WHERE b.f_id = 9
GROUP BY b.rsp_id
HAVING FIND_IN_SET(16, GROUP_CONCAT(b.o_id)) > 0
AND FIND_IN_SET(15, GROUP_CONCAT(b.o_id)) > 0
UNION
SELECT b.rsp_id FROM b
WHERE b.f_id = 4
GROUP BY b.rsp_id
HAVING FIND_IN_SET(5, GROUP_CONCAT(b.o_id)) > 0
)
ORDER BY id DESC
Здесь «f_id» - это массив, а его значения указаны в первом параметре функции «FIND_IN_SET». НапримерЕсть ли лучший способ сделать этот запрос?
9=>(
16,
15
),
4=>(
5
)
Пример данных для этих 2 folumns в таблице б, 2 колонки F_ID и O_ID
f_id o_id
9 15
9 18
9 23
4 5
3 8
Я имею в виду его входной вход пользователя как массив из формы. –
Да, в таблице b –
Добавлено больше текста вопроса. –