首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用postgres使用不同的值更新同一表中的列

在 PostgreSQL 中,您可以使用 UPDATE 语句和 CASE 表达式来根据不同的条件更新同一表中的列

假设我们有一个名为 employees 的表,其中包含以下列:idnamesalary。现在,我们想要根据员工的年龄更新他们的薪水。我们可以使用以下查询:

代码语言:javascript
复制
UPDATE employees
SET salary = CASE
    WHEN age < 30 THEN salary * 1.1
    WHEN age >= 30 AND age < 40 THEN salary * 1.05
    ELSE salary
END;

在这个例子中,我们根据员工的年龄更新了 salary 列。如果员工的年龄小于 30 岁,薪水将增加 10%;如果员工的年龄在 30 到 40 岁之间,薪水将增加 5%;否则,薪水保持不变。

您还可以根据其他列的值更新同一列。例如,假设我们有一个名为 departments 的表,其中包含以下列:idnamemanager_id。我们想要将所有属于 "IT" 部门的员工的 manager_id 更新为 1。我们可以使用以下查询:

代码语言:javascript
复制
UPDATE employees
SET manager_id = CASE
    WHEN department_id IN (SELECT id FROM departments WHERE name = 'IT') THEN 1
    ELSE manager_id
END;

在这个例子中,我们使用了子查询来查找属于 "IT" 部门的员工,并将这些员工的 manager_id 更新为 1。其他员工的 manager_id 保持不变。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

postgresserial和identity使用

但是当gizem尝试插入或更新一行时,他们收到此错误:postgres=# insert into events default values;-- ERROR: permission denied for...只需授予生成id序列使用权限即可:postgres=# grant usage on sequence events_id_seq to gizem;或者,切换到标识。...如果最后一个id为 99,则操作如下:postgres=# drop sequence events_id_seq cascade;postgres=# alter table events alter...更糟糕是,您无法恢复id返回到serial.相反,您需要创建一个新序列,并使用alter table ... set default.这真是个麻烦!现在,让我们用 identity 来尝试一下。...id of table pings2 requires itHINT: You can drop column id of table pings2 instead.可以看到有个error报错,提示在使用

10010
  • postgresmysql_fdw 扩展使用

    mysql_fdw 作用: 用来在PG快速访问MySQL数据。...1、MySQL账号授权 在 192.168.2.4 这个 MySQL服务器上创建相关账号和授权 (测试时候权限放比较大,实际生产上要严格控制权限) create user dts@'%' identified...这里可能还需要载入mysql环境变量,类似这样 export PATH=/usr/local/mysql:$PATH(我们mysql使用rpm安装,默认PATH路径可发现,这里就i不用export了...make USE_PGXS=1 make USE_PGXS=1 install chown postgres.postgres /usr/local/pgsql-11.5/lib/mysql_fdw.so...   # 我这里用root账号编译,需要改下最终pg文件夹下 .so 文件权限 然后,修改pg配置文件, 加入 mysql_fdw这个功能 shared_preload_libraries =

    1.2K20

    如何使用Excel将某几列有标题显示到新

    如果我们有好几列有内容,而我们希望在新中将有内容标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示,也可以显示标题,还可以多个列有时候同时显示。...- - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示,...则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40

    mysql使用default给设置默认问题

    对于add column,会将历史为null刷成default指定。 而对于modify column,只会对新数据产生影响,历史数据仍然会保持为null。...即使指定了default,如果insert时候强制指定字段为null,入库还是会为null 3....如果仅仅是修改某一个字段默认,可以使用 alter table A alter column c set default 'c'; 用这种方式来替换modify,会省去重建表操作,只修改frm文件...将表test,添加num字段,设置默认为0: alter table A add column num default '0' comment '数量' 此时设置为0成功。 2....结论:mysql 默认只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null将被插入到表,默认值此时失效。

    81410

    记一次批量更新整型类型 → 探究 UPDATE 使用细节

    所以,这里 ORDER BY 就和 SELECT  ORDER BY 是一样效果   关于使用场景,大家可以回过头去看看前面讲到需求背景, IGNORE 案例 1 报错,其实也可以用...一旦找到满足 WHERE 子句 row_count 行,无论这些行是否实际更改,该语句都会立即停止   也是就说 LIMIT 限制是 查阶段 ,与 更新阶段 没有关系 注意:与 SELECT 语法...我们先来看这么一个问题,假设某被声明了 NOT NULL ,然而我们更新这列成 NULL   会发生什么    我们看下 SQL_MODE ,执行 SELECT @@sql_mode; 得到结果...SQL 模式下,对 NOT NULL 字段设置 NULL ,会直接报错,更新失败     2、非严格 SQL 模式下,对 NOT NULL 字段设置 NULL ,会将字段设置字段类型对应默认...,所以大家知道有 value DEFAULT 这回事就够了   SET 字段顺序   针对如下 SQL   想必大家都很清楚   然而,以下 SQL  name 会是多少   我们来看下结果

    93910

    细说Python函数不同使用方法

    ,而可以在任何地方使用(和更新变量称为全局变量 还有一点:如果主程序里调用函数里函数值,程序会报错  就像这个例子 编辑器都告诉你这样是错误  7、函数中使用全局变量 这里我们需要用到...这是告诉Python,函数sh使用“x”变量应该是其他位置创建全局变量,而不是一个局部变量。...所以程序第一行打印是33,此后调用 函数sss,此时更行第四行全局变量,再打印x时,为800 8、内建函数 内建函数要用到 “exec ”函数,最终结果时再一个程序运行另一个程序,听起来挺拗口...,如果要改变的话,可以把返回再存储到列表  如果要返回列表的话,我们需要将返回小括号改成方括号即可  10、接下来该考虑一下比较综合性函数 我们就考虑做一个求平均值函数,调用函数代码有时候只用传入少许参数...,但是有的时候却要传入多组数据,我们可以使用任意参数长度标记——星号(*),我们就可以编写接收不同参数数量函数,下面是一个实例 def average(*numbers): # * 作用是将数据变成一个元组存放

    1.2K20

    使用VBA删除工作表多重复行

    标签:VBA 自Excel 2010发布以来,已经具备删除工作表重复行功能,如下图1所示,即功能区“数据”选项卡“数据工具——删除重复”。...图1 使用VBA,可以自动执行这样操作,删除工作表所有数据重复行,或者指定重复行。 下面的Excel VBA代码,用于删除特定工作表所有所有重复行。...Cols(i) = i + 1 Next i rng.RemoveDuplicates Columns:=(Cols), Header:=xlYes End Sub 这里使用了当前区域...如果只想删除指定(例如第1、2、3重复项,那么可以使用下面的代码: Sub DeDupeColSpecific() Cells.RemoveDuplicates Columns:=Array...(1, 2, 3), Header:=xlYes End Sub 可以修改代码中代表列数字,以删除你想要重复行。

    11.3K30

    Gas 优化:Solidity 使用动态数组

    理想情况下,这些数据存储在一个小数值动态数组。 在这篇文章例子,我们研究了在 Solidity 中使用动态数组是否比引用数组或类似解决方案在处理这些小数值时更高效。...讨论 当我们有一个由已知小数值小数组(长度小)组成数据时,我们可以在 Solidity 中使用一个数值数组(Value Arrays),在这篇文章[6],我们提供并测量了 Solidity 数值数组...基于这个特点,再加上处理引用数组时高gas消耗,让我们考虑使用数值数组。 既然我们可以为固定数组操作提供自己库,同样是否也适用于动态数组呢?...可能动态数组 在 Solidity ,只有 storage 类型有动态数组。memory 类型数组必须有固定长度,并且不允许使用push()来附加元素。...在下面的代码,我们将数组长度在存储在256位(32字节)机器码最高位。

    3.3K30

    Power BI: 使用计算创建关系循环依赖问题

    产品价格有很多不同数值,一种常用做法是将价格划分成不同区间。例如下图所示配置表。 现在对价格区间键值进行反规范化,然后根据这个新计算建立一个物理关系。...,这里使用VALUES来检索单个。...在我们例子,情况是这样: Sales[PriceRangeKey]依赖PriceRanges表,既因为公式引用了PriceRanges表(引用依赖),又因为使用了VALUES函数,可能会返回额外空行...当多端一个不存在于一端内时,VALUES返回结果会把空行包含进来。而如果使用DISTINCT,无论额外空行是否存在,DISTINCT始终产生相同结果。...假设有一个产品表具有一个唯一密钥(如产品密钥)和描述产品特征(包括产品名称、类别、颜色和尺寸)其他。当销售表仅存储密钥(如产品密钥)时,该表被视为是规范化

    74320
    领券