【发布时间】:2022-01-19 13:02:24
【问题描述】:
我有两个表,我希望表 B 将随机表 A 值分配给特定列。
表 A:
SubscriptionID | Number | SubStart | SubEnd | MobPhoneID
1 321 2013-01 NULL NULL
2 123 2013-02 2014-02 NULL
3 321 2013-03 NULL NULL
4 444 2013-04 2013-04 NULL
5 555 2013-05 NULL NULL
表 B:
MobPhoneID | Manufacturer
1 Samsung
2 LG
3 Apple
4 Sony
我的目标是:
SubscriptionID | Number | SubStart | SubEnd | MobPhoneID
1 321 2013-01 NULL 3
2 123 2013-02 2014-02 NULL
3 321 2013-03 NULL 2
4 444 2013-04 2013-04 NULL
5 555 2013-05 NULL 4
我拥有的当前代码:
UPDATE TableA
SET MobPhoneID= t2.MobPhoneID
FROM TableA t1
CROSS APPLY (
SELECT TOP 1 MobPhoneID
FROM TableB
WHERE t1.SubEnd IS NULL
ORDER BY newid()
) t2
目标是将随机电话分配给订阅未结束的人。
上面的 SQL 查询产生以下输出:
SubscriptionID | Number | SubStart | SubEnd | MobPhoneID
1 321 2013-01 NULL 2
2 123 2013-02 2014-02 NULL
3 321 2013-03 NULL 2
4 444 2013-04 2013-04 NULL
5 555 2013-05 NULL 2
它不添加随机值,它只选择一个随机值并应用于所有。
我的愿望是每个人都能得到一部随机电话。
我希望我的问题有意义,我似乎无法弄清楚我做错了什么。
【问题讨论】: