比较postgres中的两个列值

Comparing two column values in postgres

我 table 有以下列和记录。我需要比较两个列值(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')

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

结果

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

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

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

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


我建议使用 boolean 列而不是 varchar 来存储 "yes/no" 标志。那么更新就变得简单到set result = column_a > columnb

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

希望这会有所帮助。