【发布时间】:2023-02-22 00:38:10
【问题描述】:
我正在尝试根据表 B 的另一列中的值更新表 A 中的列。
表一:
| Member ID | Code |
|---|---|
| 1 | 101 |
| 1 | 105 |
| 2 | 201 |
| 2 | 205 |
| 3 | 301 |
| 3 | 305 |
表 B:
| Member ID | Code |
|---|---|
| 1 | 101: Leg |
| 1 | 105: Back |
| 2 | 201: Arm |
| 2 | 205: Hip |
| 3 | 301: Wrist |
| 3 | 305: Foot |
所以我想做的是将表 A 中的代码更新为表 B 中的代码。因此,成员 ID #1 的代码不是 101 和 105,而是 101:Leg 和 105:Back。
以下是我迄今为止尝试过但没有成功的方法。
UPDATE TableA
SET code = SUBSTRING(TableB.code, 1, PATINDEX('%[^0-9]%', TableB.code+'X')-1)
FROM TableA
JOIN TableB
ON TableA.Member_ID = TableB.Member_ID
【问题讨论】:
-
我什至不会担心会员ID。看来您可以根据 b 中的内容更新表 a 中的代码。也就是说,如果代码都是统一的。
-
为什么不修复设计并将
105和Back放在单独的列中?不在数据库中存储分隔数据,它打破了基本的规范化规则。 -
@Larnu 我没有创建数据库,这只是其他人设计它的方式。我没有权限更改它
-
@RossBush 很喜欢? UPDATE TableA SET code = TableB.code FROM TableB WHERE TableA.code = TableB.code
-
@Brockytoosocky 它是什么版本的 SQL Server?
标签: sql sql-server