所以我把这个表称为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);
我似乎无法发挥任何作用。
答案 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
将无法执行,因为您需要删除一行。我建议将上述查询结果插入临时表,截断原始表,然后重新插入所需的行。