0

选择查询必须为它获得的每个值显示单独的行,但是在执行此查询时,它仅从 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')

子查询产生逗号分隔值

有人可以帮我找到解决这个问题的方法吗?

4

2 回答 2

1

使用 aJOIN而不是 aIN

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'
于 2010-12-30T07:24:20.857 回答
1

你需要的是find_in_set

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

此功能非常缓慢,请注意性能...

于 2010-12-30T07:39:19.443 回答