我有以下SQL查询,在这种情况下,以搜索产品:MySQL的FIND_IN_SET对于在集合中的所有搜索字符串结果
SELECT sql_cache distinct p.products_id
FROM products p
INNER JOIN filter_association_products fap
ON p.products_id =fap.products_id
WHERE p.products_status = '1'
AND date_sub(curdate(),interval 3000 day) <= p.products_date_added
AND find_in_set(fap.filter_id,'130,128')
ORDER BY p.products_date_added DESC
目前的结果我得到的是所有具有FAP产品.filter_id 128和fap.filter_id 130,但我希望它仅列出具有这些过滤器的这两个的产品。
基本上我想用FIND_IN_SET做到这一点:
AND (fap.filter_id = '130' AND fap.filter_id = '128')
现在它的功能方法是:
AND (fap.filter_id = '130' OR fap.filter_id = '128')
如何才能实现这一目标?
你是什么意思@Strawberry? – CreativeMind
认为我误解了 - 但下面的答案似乎已涵盖 – Strawberry
没有真正涵盖。我仍然得到与AND相同的结果(fap.filter_id ='130'或fap.filter_id ='128')'而不是'AND(fap.filter_id ='130'和fap.filter_id ='128')' – CreativeMind