MySql-仅按特定值的列进行分组(无并集)
鉴于以下数据MySql-仅按特定值的列进行分组(无并集),mysql,Mysql,鉴于以下数据 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
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
如果不使用联合体,是否可以执行上述操作?如果不使用联合体,是否可以执行上述操作
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 '^[ ].*$'
现场演示:不使用工会
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 '^[ ].*$'
现场演示:您是否有任何值为
a的列,其中b列不等于apple?@PaulKaram否,事实上,如果该列不适用于apple分组记录,则在必要时可以简单地将其标记为“n/a”。您是否有任何值为a的列,其中b列不等于apple?@PaulKaram否,事实上,如果该列不适用于苹果分组记录,则在必要时可以简单地将其标记为“n/a”。