我有一个与颜色表有关系的产品表
一个产品可以有多种颜色... exp: 产品A:有红色、绿色、蓝色、黄色。
如何选择至少包含红色和绿色(动态)的产品?
例子:
Product: RED GREEN - PASS
Product: RED GREEN YELLOW - PASS
Product: RED YELLOW - FAIL
只喜欢连接表解决方案或独立子查询
此问题与 使用 AND 条件的一对多搜索有关
我试图从基本面解决它。
提前致谢
我有一个与颜色表有关系的产品表
一个产品可以有多种颜色... exp: 产品A:有红色、绿色、蓝色、黄色。
如何选择至少包含红色和绿色(动态)的产品?
例子:
Product: RED GREEN - PASS
Product: RED GREEN YELLOW - PASS
Product: RED YELLOW - FAIL
只喜欢连接表解决方案或独立子查询
此问题与 使用 AND 条件的一对多搜索有关
我试图从基本面解决它。
提前致谢
像这样的东西应该工作
SELECT product.name
FROM product
JOIN color USING (product_id)
WHERE color.name IN ('red', 'green')
GROUP BY product.name
HAVING COUNT(DISTINCT color.name) = 2
其中HAVING
子句指定列表中的项目数。因此,如果您想要红色、绿色和黄色的产品,您可以将查询更改为
SELECT product.name
FROM product
JOIN color USING (product_id)
WHERE color.name IN ('red', 'green', 'yellow')
GROUP BY product.name
HAVING COUNT(DISTINCT color.name) = 3