如何将某些值从一个 table 更新为另一个
How do I update certain Values from one table into another
我有两个 table 似乎不相关的数据,我想用另一列 table 的值更新一列。例如
文章
ID Weight orderId count
57 1000 10 1
1000 500 10 3
2501 1500 10 1
13 725 10 1
758 1000 10 1
...
tPackage
ID Weight orderId
1001 0 10
1002 0 10
1003 0 10
1004 0 10
...
这是插入后的样子:
tPackage
ID Weight orderId
1001 1000 10
1002 500 10
1003 500 10
1004 500 10
1005 1500 10
1006 725 10
1007 1000 10
...
包裹没有参考文章,但我每篇文章都有一个包裹,需要为每个包裹分配一篇文章的权重。一篇文章可以出现多次,需要按单位分配权重。我总是有确切数量的包裹。
关于我的尝试,我必须真诚地说,我对如何尝试完全是一片空白。我是否必须创建一个临时 table 来管理它?
多亏了 George Menoutis,我才想通了,我想。 Tally 表、ctes 和 Row_number() 对我来说都是新概念,所以我花了一段时间。这是我得到的:
WITH tally AS(
SELECT N=Number, myId=ROW_NUMBER() OVER(ORDER BY ID, Number), Weight
FROM master..spt_values
JOIN tArticle ON count >= Number
WHERE type = 'P'
),
cte AS
(
SELECT myId = ROW_NUMBER() OVER(ORDER BY ID), Weight
FROM tPackage
)
UPDATE cte SET cte.Weight = tally.Weight
FROM tally WHERE tally.myId = cte.myId
除非有人有更好的答案,否则我会接受这个作为我的答案
我有两个 table 似乎不相关的数据,我想用另一列 table 的值更新一列。例如
文章
ID Weight orderId count
57 1000 10 1
1000 500 10 3
2501 1500 10 1
13 725 10 1
758 1000 10 1
...
tPackage
ID Weight orderId
1001 0 10
1002 0 10
1003 0 10
1004 0 10
...
这是插入后的样子:
tPackage
ID Weight orderId
1001 1000 10
1002 500 10
1003 500 10
1004 500 10
1005 1500 10
1006 725 10
1007 1000 10
...
包裹没有参考文章,但我每篇文章都有一个包裹,需要为每个包裹分配一篇文章的权重。一篇文章可以出现多次,需要按单位分配权重。我总是有确切数量的包裹。
关于我的尝试,我必须真诚地说,我对如何尝试完全是一片空白。我是否必须创建一个临时 table 来管理它?
多亏了 George Menoutis,我才想通了,我想。 Tally 表、ctes 和 Row_number() 对我来说都是新概念,所以我花了一段时间。这是我得到的:
WITH tally AS(
SELECT N=Number, myId=ROW_NUMBER() OVER(ORDER BY ID, Number), Weight
FROM master..spt_values
JOIN tArticle ON count >= Number
WHERE type = 'P'
),
cte AS
(
SELECT myId = ROW_NUMBER() OVER(ORDER BY ID), Weight
FROM tPackage
)
UPDATE cte SET cte.Weight = tally.Weight
FROM tally WHERE tally.myId = cte.myId
除非有人有更好的答案,否则我会接受这个作为我的答案