检索按条件分组的表中的所有行

时间:2014-05-14 18:32:08

标签: mysql sql

我有以下mysql表:

products

带有文件:

id, product_group_id, internal_product_id, version, platform_id, name

1   12                12                   1        30           Megacalculator              
2   12                12                   2        30           Megacalculator            
3   16                17                   1        30           Calculator                    
4   16                17                   2        30           Calculator
5   16                18                   0.1      40           Calculator Linux
6   20                19                   2.1      30           Converter Windows
7   20                20                   2.1      40           Converter Linux
8   30                24                   0.1      30           Editor

我需要检索此表中按' product_group_id'分组的所有行。但是有一个不同的' internal_product_id'在集团内部。此外,每个组中的行数必须等于某个特殊数字(该值必须作为外部参数提供给查询)

例如:

外部参数= 2,结果:

product_group_id    
16                  
20                  

外部参数= 1,结果:

product_group_id    
12                  
30                  

请帮我解决这个SQL查询。

2 个答案:

答案 0 :(得分:1)

试试:

for parameter = 2

    select `product_group_id` from products
    group by `product_group_id`
    having count(distinct `internal_product_id`) = 2

for parameter = 1

    select `product_group_id` from products 
    group by `product_group_id`
    having count(distinct `internal_product_id`) = 1

DEMO HERE

答案 1 :(得分:0)

你可以这样做:

select product_group_id from products 
group by product_group_id;
having count(internal_product_id) = 2; 

或者您可以在表格中获取信息:

select product_group_id, count(internal_product_id) from products 
group by product_group_id;