通过比较一组列值来创建新列

时间:2018-07-22 18:21:20

标签: mysql

如何通过表中的“ product_id”对一组行进行分组,并通过比较组中的一组列值来创建新列?

例如,

product id   part_id  availability
1            1        true
1            2        false
1            3        true
2            1        true
2            4        true
2            8        true

通过比较“可用性”,我想创建一个“可行性”列。 如果缺少单个零件,那将是不可行的。

product_id  feasibility
1           false
2           true

我使用GROUP BY子句按product_id对其进行排序,但我无法弄清第二部分。

3 个答案:

答案 0 :(得分:1)

--insert into test(product_id, availability) values (1,true),(1,false),(2,true),(2,true);

select distinct product_id 
from test
where product_id not in (
    select product_id
    from test
    group by product_id, availability
    having availability=false
)

答案 1 :(得分:0)

使用子查询和case when子句

    select t.productid,case when availability ='true' 
    then 'product available' else 'product not available' end as feasibility 
   from 
    (
        select  productid,availability from your_table
        group by  productid,availability
    ) as t

答案 2 :(得分:0)

如果您仅对问题中显示的两列感兴趣,则有一个非常简单的解决方案:

select product_id, min(availability) feasible
from tbl group by product_id

请参阅此处以获取一些演示: http://rextester.com/GMT80394