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')
子查询产生逗号分隔值
有人可以帮我找到解决方法吗?
答案 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
这个功能非常慢,并且要注意性能......