假设我有表@A
,其中有一系列行,其中有一行包含NULL
值,对于这些行,我有表@B
(可能更少,或者更多)行的值,如何将@B
的值应用于@A
的行以填充NULL
,而不更改@B
? (我没有使用游标,我的意思是:游标相当平凡)@A
和@B
都是内存中的(表变量),只有少量的行,所以我们不必担心大数据集。将一个表中的一系列值应用到另一个表中的一系列行中
例如,如果我有:
DECLARE @A TABLE
(
x INT,
y NVARCHAR(20)
)
INSERT INTO @A (y) VALUES ('aaa'), ('bbb'), ('ccc')
DECLARE @B TABLE
(
x INT
)
INSERT INTO @B (X) values (1), (2)
现在我有@A
:
x y ----------- ----------- NULL aaa NULL bbb NULL ccc
和@B
:
x ----------- 1 2
...我想更新@A
基于所以它有:
x y ----------- ----------- 1 aaa 2 bbb NULL ccc
...理想地以该顺序(例如,在@B
最低值变为x
用于@A
最低y
,那么下一个,等等)。
我觉得有一个相当简单的方法来做到这一点,但我没有收到有...
他改变了他的问题,但你的查询仍然有效 – Jaques 2014-11-25 13:51:09
非常好,谢谢 - 我想'ROW_NUMBER'可能会进入它的某处... – 2014-11-25 13:56:44
@GerethD,你忘记了你的其他部分=在连接中,我修复了它虽然你 – Jaques 2014-11-25 13:58:00