Ниже запрос не дает ожидаемый результат, пожалуйста, помогите мне
Запрос select должен отображать отдельную строку для каждого значения, которое он получает, но при выполнении этого запроса он выдает только первое значение из подзапроса, используемого в предложении IN.
SELECT prod_id FROM tbl_product WHERE tbl_product.prod_status = 1 AND
tbl_product.is_excluded = 0 AND tbl_product.prod_stock_qty > 0
AND tbl_product.prod_id IN (SELECT rel_prod_ids
FROM tbl_product_relations WHERE prod_id = '6058')
Подзапрос возвращает значения, разделенные запятыми
Может ли кто-нибудь помочь мне найти решение этой проблемы?
2 ответа
Решение
Что вам нужно find_in_set
select find_in_set(123, '123,12345,123456'); <-- return 1
select find_in_set(123, '1234,12345,123456'); <-- return 0
Эта функция довольно медленная и остерегайтесь производительности...
Использовать JOIN
вместо IN
SELECT p.prod_id
FROM tbl_product p JOIN tbl_product_relations pr ON p.prod_id = pr.rel_prod_ids
WHERE p.prod_status = 1
AND p.is_excluded = 0
AND p.prod_stock_qty > 0
AND r.prod_id = '6058'