【发布时间】:2021-06-06 17:52:30
【问题描述】:
我想将 TableA 的列与 TableB 的一列中的值进行匹配,以便更新 TableB 中另一列中的值。
表A:
| 001100 | 001200 | 003000 | 004000 | 005000 |
|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 0 |
表B:
| Column_1 | Score |
|---|---|
| 001100 | |
| 001200 | |
| 003000 | |
| 004000 | |
| 005000 |
因此,例如,我希望将 TableB 中的“分数”列更新为 001100 的值“1”。因此结果表应如下所示:
| Column_1 | Score |
|---|---|
| 001100 | 1 |
| 001200 | 0 |
| 003000 | 1 |
| 004000 | 1 |
| 005000 | 0 |
我知道如何通过硬编码和一次一行来更新它:
Update [TableB]
Set Score = [001100]
From [Table A]
Where [Column_1] = '001100'
但是我有超过 50 个这样的列,所以如果有人能建议我如何在不必对列名进行硬编码的情况下完成这项工作,那就太好了。因此,代码将从 TableA 中动态获取列名,然后将其与 tableB Column_1 值匹配。
【问题讨论】:
-
[TableA]中是否只有 1 行?[TableA]中的列名是否固定(已知且不会更改)?为什么[TableB]中的001100的得分是0 而不是1(因为它在TableA 中是1)? -
你看过JOINS吗?
-
嗨,Ryan,在 [TableA] 中会有更多的一行。但一次,我将只过滤/选择一行。因此,我在上面的示例中只保留了一行。是的,[TableA] 中的列名保持不变。关于最后一部分,这是一个错字。我现在修好了,谢谢:)
-
嗨布拉德,我无法使用连接,因为共同点是行和列之间,而不是列到列之间。
标签: sql sql-server tsql sql-server-2008