你可以帮我查询数据库,我需要选择具有相同组合ID的产品。 例如ID为70和75的产品。它们都有过滤器1和12。
IN不会工作,它也需要#66因为它有过滤器1那里,但第二个是11,这不是我需要的......
product_id | filter_id
______________________
66 | 1
66 | 11
68 | 9
69 | 13
70 | 1
70 | 12
71 | 14
72 | 4
72 | 17
73 | 7
73 | 14
74 | 16
75 | 1
75 | 12
答案 0 :(得分:0)
试试这个:
SELECT t1.*
FROM table AS t1
JOIN table AS t2 ON t1.product_id = t2.product_id
WHERE t1.filter = 1
AND t2.filter = 12
答案 1 :(得分:0)
SELECT Product_ID
, Filter_ID
FROM Your_Table a
WHERE Filter_ID = 1
AND EXISTS (
SELECT NULL
FROM Your_Table b
WHERE Filter_ID = 12
AND b.Product_ID = a.Product_ID
)
答案 2 :(得分:0)
如果你想要具有完全相同的id(而不是具体的1和12)的对,那么我建议使用group_concat()
列出id然后再加入以找到重复项。以下内容列出了重复的过滤器列表及其产品列表:
select filters, count(*) as numdups, group_concat(product_id) as products
from (select product_id, group_concat(filter_id order by filter_id) as filters
from table t
group by product_id
) pf
where count(*) > 1;
答案 3 :(得分:0)
您可以通过以下方式使用群组:
SELECT
product_id,
COUNT(*) cnt
FROM
tablename
WHERE
filter_id IN (1,12)
GROUP BY
product_id
HAVING COUNT(*) = 2