sql - 如何将表变量中的所有不同值分配给表中现有行中的字段?
问题描述
我有一个表变量 ( @tableVar
),其中有一列 ( tableCol
) 的唯一值。
我有一个包含许多现有行的目标表,其中还有一个完全用 NULL 值填充的列。
对于目标表中的每一行,我可以使用什么类型的语句来迭代@tableVar
并为空字段分配不同的值?@tableVar.tableCol
*编辑(提供信息)我的目标表具有以下结构:
+-------+------------+
| Name | CallNumber |
+-------+------------+
| James | NULL |
| Byron | NULL |
| Steve | NULL |
+-------+------------+
我的表变量有这个结构
+------------+
| CallNumber |
+------------+
| 6348 |
| 2675 |
| 9898 |
+------------+
我需要为目标表中的每一行分配一个不同的索书号,以实现这种结果。
+-------+------------+
| Name | CallNumber |
+-------+------------+
| James | 6348 |
| Byron | 2675 |
| Steve | 9898 |
+-------+------------+
注意:每一行不需要特定的 CallNumber。唯一的要求是每一行都有一个唯一的 CallNumber。例如,“詹姆斯”并不特别需要 6348;他可以有任何数字,只要它是唯一的,并且唯一的数字必须来自表变量。您可以假设表变量将有足够的 CallNumber 来满足此要求。
我可以为此结果使用什么类型的查询?
解决方案
您可以使用update
带有序列号的 an:
with toupdate as (
select t.*, row_number() over (order by (select null)) as seqnum
from target t
)
update toupdate
set col = tv.tablecol
from (select tv.*, row_number() over (order by (select null)) as seqnum
from @tablevar tv
) tv
where tv.seqnum = toupdate.seqnum;
这假设@tablevar
有足够数量的行来分配 in target
。如果没有,我建议您使用示例数据和所需结果提出一个新问题。
这是一个 db<>fiddle。
推荐阅读
- iframe-resizer - 使用 iframe-resizer 获取未捕获的 TypeError
- swift - 带有模型观察器的 Swift MVC 架构
- ios - 从 URL 异步加载图像到单元格中的 UIImageView 不会在初始加载时加载
- r - 迭代 R 中的增量栅格值以创建新的栅格数据集
- python - 在 Python Turtle 中将圆半径与窗口大小联系起来
- ios - Swift iOS -how to cancel DispatchGroup() from managing a loop
- c# - 枚举器的初始化
- php - 传递字符串参数时有没有办法让IDE PHP代码自动完成?
- swift - 在某些情况下,使用 searchController 推动转换不会平滑地更改导航栏的大小
- python - 如何在 tkinter 上使用单选按钮