我有很多到很多的关系和三张桌子: A,B,C。
A和C各只有1个主键,B的复合主键是表A和表C的外键,仅此而已。
表A和表C已经满了数据,每个表都有100行数据,现在我想在B中插入一行,其中包括A的随机密钥和C的随机密钥。
这是我尝试过的,但我不知道如何在select语句中获得当前处理的行,我现在被困在.我甚至不知道这种说法到底是好的,还是有更好的方法?
INSERT INTO B(bKey1, bKey2)
VALUES(
(select a.key1 from A a where Convert(int, rand() * 100.0) = currentRow? ),
(select c.key2 from C c where Convert(int, rand() * 100.0) = currentRow? )
);即使将固定值插入为1或2而不是"currentRow?“我在跟踪错误,我不明白为什么:
无法将值NULL插入'bKey1‘列、表'MyDataBase.dbo.B';列不允许空值。插入失败。
我真的很感谢你的帮助!
发布于 2015-10-29 17:19:57
要从每个表中获取一个随机记录,您可以将这些表放在一起,使用cross join,并按newid()排序
INSERT INTO B(bKey1, bKey2)
select top 1
a.key1,
c.key2
from A a
cross join C c
order by newid()https://stackoverflow.com/questions/33420392
复制相似问题