Это не совсем красиво, но вы можете "преобразовать" свой список в подзапрос и объединить его с фактической таблицей, которую вы хотите запросить.
SELECT t.stuff
FROM (SELECT 'in item 1' AS item
UNION ALL SELECT 'in item 2'
UNION ALL ...
) AS inList
INNER JOIN $tablename AS t ON inList.item = CONCAT(t.brandname, ' ', t.dosage)
ORDER BY ...
Я предполагаю, что, вероятно, есть некоторые php-методыможно использовать для разбиения / разделения переменной, которую вы использовали для заполнения списка IN, для создания подзапроса SELECT ... UNION ALL ...
.
Худший, самый примитивный случай (в псевдокоде), предполагая простой список, разделенный запятыми:
theList = "SELECT " + REPLACE(theList, ',', ' AS item UNION ALL SELECT')
Если длина запроса становится проблемой, другой вариант - создать временную таблицу для хранения списка IN, а затем присоединиться к ней.(Эту технику также иногда можно использовать для ускорения запроса; поскольку временная таблица может быть проиндексирована, чтобы помочь с операцией объединения.)