在sql中组合2行的正确方法是什么

时间:2015-02-18 04:08:49

标签: mysql sql-server

所以我把这个表称为test。

A       B   C
dude    10  10
cool    10  10
other   10  10

我想基于a列组合2行。

因此,如果我太合并“dude”和“cool”,我最终会得到类似的东西。删除第二个名称。我确实意识到我可能需要再次拨打电话来删除旧行。

A       B   C
dude    20  20
other   10  10

我想用嵌套选择做一个更新语句是错误的吗?

我尝试过这样的事情,看看我是否可以合并b列。

Update test Set b = al.newb
  FROM
  (
    SELECT b as newb 
    FROM test WHERE a = "cool"
  ) al
Where a = "dude";

如果需要,这是一个用于创建表的sql fiddle调用。

Create Table test (a varchar(10), b int(3), c int(3));

Insert into test (a, b, c) values ("dude", 10, 10);
Insert into test (a, b, c) values ("cool", 10, 10);
Insert into test (a, b, c) values ("other", 10, 10);

我似乎无法发挥任何作用。

1 个答案:

答案 0 :(得分:0)

您可以使用select

执行所需操作
select (case when a in ('cool', 'dude') then 'dude' else a end) as a,
       sum(b) as b, sum(c) as c
from test
group by (case when a in ('cool', 'dude') then 'dude' else a end);

如果要修改数据,update将无法执行,因为您需要删除一行。我建议将上述查询结果插入临时表,截断原始表,然后重新插入所需的行。