Sql 使用其他表中的数据充实表
目前我有两个表:一个是客户数据客户表,另一个是礼品卡信息礼品卡表 GIFTCARD_表由100行组成,有2列:卡号和Pin码 现在我需要用GIFTCARD_表中的2列来充实CLIENT_表35行,因此每个客户端都需要一个卡号及其对应的pin_代码,哪一个不使用相同的卡号和pin_代码两次并不重要 由于这些表没有我可以使用的任何键,我不知道如何才能做到这一点 有什么建议我可以解决这个问题吗Sql 使用其他表中的数据充实表,sql,join,teradata,Sql,Join,Teradata,目前我有两个表:一个是客户数据客户表,另一个是礼品卡信息礼品卡表 GIFTCARD_表由100行组成,有2列:卡号和Pin码 现在我需要用GIFTCARD_表中的2列来充实CLIENT_表35行,因此每个客户端都需要一个卡号及其对应的pin_代码,哪一个不使用相同的卡号和pin_代码两次并不重要 由于这些表没有我可以使用的任何键,我不知道如何才能做到这一点 有什么建议我可以解决这个问题吗 善意的问候示意图I在Teradata语法中可能不正确: 使现代化 -此表副本将被更新 客户需求表c1 -此C
善意的问候示意图I在Teradata语法中可能不正确: 使现代化 -此表副本将被更新 客户需求表c1 -此CTE枚举客户端,join枚举第一个副本中的行 按id rn在订单上加入选择id、行号 来自c1.id=c2.id上的客户_表c2 -此CTE枚举卡,join通过“rn”编号将卡一对一分配给客户端 按卡号rn在订单上加入SELECT*,行号 根据c2.rn上的GIFTCARD_表g=g.rn 设置c1.卡号=g.卡号, c1.销码=g.销码;
如果你想随机分配卡片,你需要:
select *
from
( -- random row_numbers
select dt.*,
row_number() over (order by rnd) as rn
from
( -- 35 random clients
select t.*, random(1,1000000000) as rnd
from CLIENT_TABLE as t
sample randomized allocation 35
) as dt
) as client
join
( -- random row_numbers
select dt.*,
row_number() over (order by rnd) as rn
from
(
select t.*, random(1,1000000000) as rnd
from GIFTCARD_TABLE as t
) as dt
) as card
on client.rn = card.rn
RANDOM不能直接用于行编号。因为这些表没有我可以使用的键,我不知道如何才能做到这一点。这是否意味着这些数据现在不相关,没有一张卡属于任何确定的客户?您需要从100到35个客户机随机分配35张卡?Teradata或MySQL?选择一个DBMS,MySQL或Teradata,然后删除不相关的标记。并指定精确的数据库服务器版本。@Akina是的,它们是不相关的,需要随机分配给35个客户端。谢谢您的回答!