MySQL表看起来像
product_id material
----------------------
1 A
1 B
1 C
2 A
2 B
3 A
3 B
3 C
3 D
4 A
4 B
4 D
我要所有那些有A,B,C材料的产品
因此输出应该是1,3
使用group by似乎很合适,但是如何传递多个要匹配的材料。
要匹配的材料数量可能不同,即第一个查询可能是材料A、B、C的输出:1、3,第二个查询可能是材料A的输出:3、4
我应该在java程序的Hibernate中编写什么查询,以及mysql查询?
最佳答案
查询
SELECT product_id
FROM products
WHERE material IN ('A', 'B', 'C')
GROUP BY product_id
HAVING COUNT(DISTINCT material) = 3;
SQL Fiddle Demo