以下查询不给我预期的结果请帮帮我

时间:2010-12-30 07:19:30

标签: mysql subquery in-subquery

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 个答案:

答案 0 :(得分:1)

使用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'

答案 1 :(得分:1)

您需要的是find_in_set

select find_in_set(123, '123,12345,123456');  <-- return 1
select find_in_set(123, '1234,12345,123456'); <-- return 0

这个功能非常慢,并且要注意性能......