【问题标题】:Comparing two column values in postgres比较postgres中的两列值
【发布时间】:2019-10-24 09:11:42
【问题描述】:

我的表格包含以下列和记录。我需要比较两列值(ColumnA 和 ColumnB),如果 ColumnB>ColumnA 则将第三列从 'N' 更新为 'Y'

CREATE TABLE Test(ColumnA int,ColumnB int,Result Varchar(2))

INSERT INTO Test values(1,3,'N')
INSERT INTO Test values(2,1,'N')
INSERT INTO Test values(1,5,'N')
INSERT INTO Test values(8,7,'N')

我需要更新第一行和第三行的 Result Column='Y' 因为 columnB>ColumnA

结果

ColumnA   ColumnB Result
1          3      Y
2          1      N
1          5      Y
8          7      N

【问题讨论】:

标签: sql sql-update case postgresql-9.1


【解决方案1】:

这可以通过一个简单的 CASE 表达式来完成:

update test
  set result = case 
                 when columna > columnb then 'Y' 
                 else 'N' 
               end
;

在线示例:https://rextester.com/ZHIUZD82060


我建议使用boolean 列而不是varchar 来存储“是/否”标志。然后更新就变成set result = column_a > columnb

【讨论】:

  • 根据您的建议。我将数据类型更改为布尔值。谢谢。
【解决方案2】:
update test
set result = 
    case
        when columnb > columna then 'Y'
        else 'N'
    end;

希望这会有所帮助。

【讨论】:

  • 您的答案中有什么新内容不包括第一个答案吗?
  • 当我可以检查时,输入已按下。所以时间不同了。@ZaynulAbadinTuhin
  • @Ram 这个答案晚于第一个答案,但接受了它?
  • 对不起朋友,我不想争论@ZaynulAbadinTuhin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2016-08-17
  • 1970-01-01
  • 2023-01-30
  • 2010-12-11
相关资源
最近更新 更多