2017-06-15 105 views
0

给定以下数据;MySql - 仅由具有特定值的列进行分组(无UNION)

column a | column b | column c 
________ ________ _______ 
    A  | apple | 1 
    P  | pear  | 3 
    O  | orange | 4 
    A  | apple | 1 
    P  | peach | 2 
    P  | pear  | 3 
    P  | peach | 1 
    A  | apple | 4 

我想选择和只有组(和总和)由苹果。其余列不会被分组,因此以下是输出;

column a | column b | column c 
________ ________ _______ 
    A  | apple | 6 
    P  | pear  | 3 
    O  | orange | 4 
    P  | peach | 2 
    P  | pear  | 3 
    P  | peach | 1 

是上述可能不使用UNION

+0

你有任何价值列'了'其中B列不等于苹果吗? –

+0

@PaulKaram不,实际上如果不适用于苹果分组记录的目的,这个列可以简单地标记为“不适用”。 – dre

回答

2

,不使用UNION

SELECT tbl.id,tbl.a,tbl.b,tbl.c FROM (
SELECT id,a, 
    CASE WHEN b='apple' THEN @ap:= (@ap+c) ELSE c END as c, 
    CASE WHEN b = (SELECT b FROM fruit WHERE id > frA.id AND b='apple' LIMIT 1) THEN b ELSE CONCAT(' ',b) END as b 
    FROM fruit AS frA, (SELECT @ap:=0) AS apc 
    ) as tbl 
WHERE tbl.b REGEXP '^[ ].*$' 

现场演示:SQL Fiddle

相关问题