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

标签 sql database

假设我们有一个名为 Swap-Table 的表。

    *Input Table*

    ID  NAME    Type
    ------------------ 
    1   name1    a
    2   name2    b
    3   name3    b  

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

   **Output Table**

    ID  NAME    Type
    ------------------ 
    1   name1    b
    2   name2    a
    3   name3    a

条件:无 CASE/SWITCH

最佳答案

您可以使用 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

但是,如果您问的话,这里的 CASE 看起来更具可读性和易懂性。

关于sql - 如何在单个命令中更新数据库列值(无 CASE/SWITCH)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427441/

相关文章:

sql - GROUP BY 限制示例

mysql - 在我的案例中,如何从第一个表中找到第二个表中丢失的行?

mysql - 在 JOIN 中使用具有 'AS' 的字段的指定名称

mysql - 在将两个表与第三个表连接时计算记录的总和

sql - Postgres 中没有子查询的总计算百分比

android - 什么是现有 SQLite 数据库的完整 Android 数据库助手类?

database - 警告(org.hibernate.jdbc.JDBCContext :333) - afterTransactionCompletion() was never called

java - 如何设置 Hibernate 配置属性以使用 Fabric 驱动程序连接到 Mysql

sql-server - 数据库批准拒绝工作流程

php - 如何实现MySQL : :"LOAD DATA LOCAL INFILE" in PHP?