复杂的update语句

本文提供两个SQL更新脚本示例,分别用于更新代理的责任区域及管理区域,并同步从另一表中获取最新数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1

UPDATE DIM_AGENT T

   SET T.DUTY_AREA =
       (SELECT L.DUTY_AREA
          FROM V_MU_AMS_AGENT L
         WHERE L.IATA_CODE = T.AGENT_IATA),
       T.ADMIN_AREA =
       (SELECT L.ADMIN_AREA
          FROM V_MU_AMS_AGENT L
         WHERE L.IATA_CODE = T.AGENT_IATA)
 WHERE EXISTS (SELECT *
          FROM V_MU_AMS_AGENT L
         WHERE L.IATA_CODE = T.AGENT_IATA
           AND L.DUTY_AREA != T.DUTY_AREA)

2

    UPDATE
    (
      SELECT/*+ bypass_ujvc*/
             t.exe_company,
             k.company_cd
        FROM nw_flight_base t,
             (
               SELECT a.rowid AS rid, b.company_cd
                 FROM nw_flight_base a,
                      (SELECT t.*,
                              nvl(lead(apply_dt)
                                  over(PARTITION BY ac_no ORDER BY apply_dt) - 1,
                                  to_date('2999-12-31', 'yyyy-mm-dd')) next_apply_dt
                         FROM sa_aircraft t) b
                WHERE a.ac_no = b.ac_no
                  AND a.flight_dt BETWEEN b.apply_dt AND b.next_apply_dt
                  AND a.flight_dt BETWEEN p_flight_dt_from AND p_flight_dt_to
              ) k
      WHERE t.rowid = k.rid
    ) SET exe_company = company_cd;


### SQL UPDATE语句的正确格式和示例 #### 1. 基本语法 SQL 中的 `UPDATE` 语句用于修改表中已存在的记录。其基本语法如下: ```sql UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ``` 此语法中的 `SET` 子句用于指定需要更新的列及其新值,而 `WHERE` 子句则用于限定哪些记录需要被更新[^2]。 #### 2. 示例 以下是一个简单的 `UPDATE` 语句示例,展示如何更新单个字段的值: ```sql UPDATE employees SET salary = 50000 WHERE employee_id = 101; ``` 这条语句的作用是将 `employees` 表中 `employee_id` 为 101 的记录的 `salary` 字段更新为 50000。 #### 3. 更新多个字段 可以同时更新多个字段的值,例如: ```sql UPDATE employees SET salary = 60000, department = 'HR' WHERE employee_id = 102; ``` 这条语句将 `employees` 表中 `employee_id` 为 102 的记录的 `salary` 字段更新为 60000,并将 `department` 字段更新为 'HR'[^2]。 #### 4. 使用表达式或函数更新字段 除了直接赋值外,还可以使用表达式或内置函数来更新字段。例如: ```sql UPDATE products SET price = price * 1.1 WHERE category = 'Electronics'; ``` 这条语句将 `products` 表中 `category` 为 'Electronics' 的所有记录的 `price` 字段增加 10%[^3]。 #### 5. 使用子查询更新字段 `UPDATE` 语句也可以结合子查询使用,以实现更复杂的更新逻辑。例如: ```sql UPDATE employees SET manager_id = (SELECT employee_id FROM employees WHERE name = 'John Doe') WHERE department = 'Finance'; ``` 这条语句将 `employees` 表中 `department` 为 'Finance' 的所有记录的 `manager_id` 字段设置为名为 'John Doe' 的员工的 `employee_id`[^1]。 #### 6. 注意事项 - 如果省略 `WHERE` 子句,则表中的所有记录都会被更新,这可能会导致意外的数据更改,因此必须谨慎处理。 - 在执行 `UPDATE` 语句时,通常涉及事务管理,确保数据一致性。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值