Ниже запрос не дает ожидаемый результат, пожалуйста, помогите мне

Запрос 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'
Другие вопросы по тегам