如何在单个命令中更新数据库列值(无CASE/SWITCH)?

Mas*_*lah 1 sql database

假设我们有一个表名Swap-Table.

    *Input Table*

    ID  NAME    Type
    ------------------ 
    1   name1    a
    2   name2    b
    3   name3    b  
Run Code Online (Sandbox Code Playgroud)

我想写一个命令来更新表.输出表将是

   **Output Table**

    ID  NAME    Type
    ------------------ 
    1   name1    b
    2   name2    a
    3   name3    a
Run Code Online (Sandbox Code Playgroud)

条件:无案例/开关

NLi*_*ink 5

您可以使用CTE或某种子查询来生成更新字典

WITH upd_dict (type_from, type_to) AS (
  SELECT 'a', 'b'
  UNION 
  SELECT 'b', 'a')
UPDATE table_name
   SET type = ud.type_to
  FROM upd_dict ud
 WHERE ud.type_from = type
Run Code Online (Sandbox Code Playgroud)

但是如果你问的话,CASE在这里看起来更具可读性和可理解性.