带有 CASE 和多个条件的 PostgreSQL UPDATE 语句

PostgreSQL UPDATE statement with CASE and multiple conditions

我正在尝试根据 3 个条件更新 table 中的单个列。我尝试使用 CASE 语句,我可以获得 2 个条件,但不是第 3 个条件。这是条件的标准:

  1. 如果字段 transpond = 0 那么字段 transpondertype 应该是 'N'
  2. 如果字段 transpond = 1 那么字段 transpondertype 应该是 'A'
  3. 如果字段 modesquip = 1 那么字段 transpondertype 应该是 'S'

这是我想出的SQL:

UPDATE "myDatabase".myTable
SET transpondertype=(CASE 
                       WHEN transpond=0 THEN 'N'      
                       WHEN transpond=1 THEN 'A'      
                       WHEN transpond=1 AND modesequip=1 THEN 'S'
                     END);

transpondertype 字段在前两个条件下正确更新,这是最后一个永远不会正确更新的 WHEN 语句(它根本不更改数据)。我最初尝试了 WHEN modesequip=1 THEN 'S',但也没有用。

我如何获取更新 CASE 语句所有 3 个部分的 transpondertype 字段的语句?

试试这个

UPDATE "myDatabase".myTable
SET transpondertype=(CASE 
                       WHEN transpond=0 THEN 'N'      
                       WHEN transpond=1 THEN
                                      CASE  WHEN modesequip=1 
                                      THEN 'S'
                                      ELSE 'A'
                                      END
                       
                          END);

当 transpond=1 且 modesequip!=1 时 'A'