来自子查询的MySQL IN值

时间:2012-12-08 07:26:18

标签: mysql sql subquery

我有一个像

这样的查询
select prod_name 
from ct_products 
where id in ( (select prod_id 
               from ct_recommend 
               where cat_id=12) ) and status > 0

但是,因为子查询返回的字符串看起来像1,2,3而不是结果行,所以查询不能按预期方式工作。有没有办法格式化子查询结果,以便它在IN子句中工作?

谢谢!

2 个答案:

答案 0 :(得分:5)

尝试一下,

select prod_name 
from ct_products 
where FIND_IN_SET(ID,(select prod_id from ct_recommend where cat_id=12)) <> 0 
      and status > 0

答案 1 :(得分:0)

试试这个:

SELECT prod_name 
FROM ct_products cp 
WHERE STATUS > 0 AND 
      EXISTS (SELECT * FROM ct_recommend cr WHERE cp.id = cr.prod_id AND cat_id=12);