首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据其他表的内容生成表内容?

如何根据其他表的内容生成表内容?
EN

Stack Overflow用户
提问于 2015-10-29 17:01:08
回答 1查看 34关注 0票数 1

我有很多到很多的关系和三张桌子: A,B,C。

A和C各只有1个主键,B的复合主键是表A和表C的外键,仅此而已。

表A和表C已经满了数据,每个表都有100行数据,现在我想在B中插入一行,其中包括A的随机密钥和C的随机密钥。

这是我尝试过的,但我不知道如何在select语句中获得当前处理的行,我现在被困在.我甚至不知道这种说法到底是好的,还是有更好的方法?

代码语言:javascript
复制
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';列不允许空值。插入失败。

我真的很感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-29 17:19:57

要从每个表中获取一个随机记录,您可以将这些表放在一起,使用cross join,并按newid()排序

代码语言:javascript
复制
INSERT INTO B(bKey1, bKey2) 
    select top 1
        a.key1,
        c.key2
    from A a
        cross join C c
    order by newid()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33420392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档