我的数据库中有列 (Builder),我想更新它的三个值并使其成为一个值,因为它完全相同,但我们的数据源将它分开处理。我不知道即使在更新语句之后,数据库仍然将它们视为单独的值的困境是什么。我的数据源总共显示 5 行,我的数据库也是如此。我该怎么做才能将它们视为一个单一的值而不是三个?
select * from traffic
Builder Contacts
Small Brother 0
Big Brother 8
Brother 10
Neighbor 7
Friend 5
我更新了表中的值:
update traffic set Builder = 'Brothers' WHERE Builder in ('Brother',
'Big Brother','Small Brother') ;
当我做的时候
select distinct Builder from traffic
Builder
Brothers
Neighbor
Friend
它显示为一个值为 'Brothers' 表示更新语句执行成功。
令人惊讶的是,当我运行时
select * from traffic
Builder Contacts
Brothers 0
Brothers 8
Brothers 10
Neighbor 7
Friend 5
当我应用聚合函数时:
select Builder, sum(Contacts)
from traffic
group by Builder, Contacts
Builder Sum
Brothers 8
Brothers 10
Neighbor 7
Friend 5
我需要帮助的结果:
select * from traffic
Builder Contacts
Brothers 18
Neighbor 7
Friend 5
最佳答案
SELECT * FROM traffic
将为您提供流量表中的每一列和每一行。 因为您刚刚将其中 3 行更新为“Brother”,所以您得到的正是这个结果。为了得到你想要的结果,你需要使用
GROUP BY
子句和聚合子句。
有点像
SELECT Builder, SUM(Contacts)
FROM traffic
GROUP BY Builder
这实际上告诉数据库首先按构建者分组,这将去除重复项,然后选择所有联系人的计数。 SELECT 语句在数据库中最后运行。
关于sql - 相同的值显示为三个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41490247/