`UPDATE FROM` 的语法以及常见的更新操作方式

简介: `UPDATE FROM` 的语法以及常见的更新操作方式

在 SQL Server 中,更新(Update)操作可以结合使用 `FROM` 子句来从其他表或子查询中获取数据进行更新。这种方式通常用于复杂的更新逻辑,例如基于关联表的更新或者使用子查询筛选需要更新的行。下面我会详细介绍 `UPDATE FROM` 的语法以及常见的更新操作方式。

 

### UPDATE FROM 语法

 

基本的 `UPDATE FROM` 语法结构如下:

 

```sql
UPDATE target_table
SET target_table.column_name = source_table.expression
FROM target_table
JOIN source_table ON target_table.key_column = source_table.key_column
WHERE condition;
```

 

其中:

 

- `target_table` 是要更新的目标表。

- `source_table` 是包含要用于更新的数据的源表或者子查询结果。

- `target_table.column_name` 是目标表中要更新的列。

- `source_table.expression` 是从源表或子查询中选择的表达式或列。

- `JOIN` 条件定义了如何将目标表的行与源表的行关联。

- `WHERE` 子句用于筛选要更新的行。

 

### 示例和常见更新操作方式

 

#### 1. 基本更新

```sql

-- 将员工表中所有姓为 'Smith' 的员工的薪水提高 10%

UPDATE Employees
SET Salary = Salary * 1.1
WHERE LastName = 'Smith';
```

#### 2. 使用子查询进行更新

```sql

-- 根据另一个表的查询结果更新目标表

UPDATE Employees
SET Salary = Salary * 1.05
FROM Employees e
JOIN Sales s ON e.EmployeeID = s.EmployeeID
WHERE s.Amount > 10000;
```

 

上述示例中,`Sales` 表中的销售金额超过 10000 的员工,其薪水将会提高 5%。

 

#### 3. 使用多个表更新

 

```sql

-- 根据多个表的数据更新目标表

UPDATE Orders
SET Orders.Status = 'Completed'
FROM Orders o
JOIN OrderDetails od ON o.OrderID = od.OrderID
JOIN Products p ON od.ProductID = p.ProductID
WHERE p.Category = 'Electronics';
```

这个例子中,当产品类别为 'Electronics' 的订单通过关联表连接更新其状态为 'Completed'。

 

#### 4. 使用子查询进行条件更新

 

```sql

-- 使用子查询进行条件更新

UPDATE Employees
SET VacationHours = 0
FROM Employees e
WHERE e.EmployeeID IN (SELECT EmployeeID FROM Managers);
```

 

在这里,所有在 `Managers` 表中出现的员工的年假小时数被设置为 0。

 

### 注意事项

 

- **谨慎使用更新操作:** 更新操作可能会对数据库性能产生重大影响,特别是在大型表中,应该谨慎使用。

- **备份数据:** 在执行重要的更新操作之前,请确保已经备份了数据,以防止意外情况发生。

- **事务管理:** 对于复杂的更新操作,考虑使用事务来确保数据的一致性和完整性。

 

综上所述,`UPDATE FROM` 提供了一种强大的方式来在 SQL Server 中执行复杂的更新操作,通过结合 `JOIN` 和 `WHERE` 子句,可以根据需要从多个表或子查询中选择和更新数据。

青欢
+关注
目录
打赏
0
2
2
0
42
分享
相关文章
MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)
MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)
204 0
当update修改数据与原数据相同时会再次执行吗
当update修改数据与原数据相同时会再次执行吗
62 1
数据更新语句INSERT语句、UPDATE语句、DELETE语句等,用于向数据表中插入、更新或删除数据。示例
数据更新语句INSERT语句、UPDATE语句、DELETE语句等,用于向数据表中插入、更新或删除数据。示例
121 1
使用tkmapper避免更新on update字段
使用tkmapper避免更新on update字段
180 0
【ThinkPhp3.2】关于update指定了条件,但是进行了全表更新
【ThinkPhp3.2】关于update指定了条件,但是进行了全表更新
216 0
【ThinkPhp3.2】关于update指定了条件,但是进行了全表更新

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等