postgresql - 将计算值添加为新列,同时删除重复项

标签 postgresql group-by sql-update duplicates

假设我有下表 Playground :

 serialnumber  length  breadth  country
 1             15      10       Brazil
 2             12      11       Chile
 3             14      10       Brazil
 4             14      10       Brazil

现在,我想在表格中添加一列区域,本质上是长度*宽度

显然,我可以进行此更新:

UPDATE playground set area = length*breadth where country = 'Brazil'.

使用上述语句,我将不得不为序列号 3 和 4 计算两次长度 * 宽度。有没有办法添加 group by 并最大限度地减少计算量?

类似于:

UPDATE playground set area = length*breadth where country = 'Brazil'
group by length, breadth;

最佳答案

首先要注意的是,您不应将区域添加为列。恰好是简单算术运算结果的数据项不需要自己的列。

第二点是,您无需担心对第 3 行和第 4 行各执行一次乘法运算。这对服务器来说几乎是零工作量

第三点是,如果您担心第3行和第4行,那意味着它们是重复的,并且重复的数据不应该在数据库中。考虑删除重复项,如下所述:https://wiki.postgresql.org/wiki/Deleting_duplicates

关于postgresql - 将计算值添加为新列,同时删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621230/

相关文章:

mysql - 选择在一台机器上工作而不是在另一台机器上工作时非按列分组

mysql - 如果其他表中的数据不匹配,则更新表

postgresql - 最长公共(public)子序列 Postgresql

python - 奇怪的 SQLAlchemy 错误消息 : TypeError: 'dict' object does not support indexing

sql - 转换为日期时未使用 PostgreSQL 时间戳索引

oracle - 当数据值相同时,Oracle 会更新列吗?

mysql - 在单个查询中更新 2 个表中的随机记录

node.js - Postgres : Complex Multiple Update query for one to many relationship

sql-server - SQL 按日期分组

SQL 分组限制