首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -我在这个"Insert Into Select“查询中做错了什么?

SQL -我在这个"Insert Into Select“查询中做错了什么?
EN

Stack Overflow用户
提问于 2017-06-21 10:56:20
回答 1查看 46关注 0票数 0

我必须用测试数据填充数据库,而我的数据库与交付相关。这就是我想要做的:

代码语言:javascript
复制
Insert into Orders (OrderCode, OrderDate, Insurance,QuickDelivery, PackageNumber, ClientID, AdressID, DeliveryID, OrderStatusID)
    Select SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 20),
           D.OrderDate,
           FLOOR(RAND()*(1-0)+0),
           FLOOR(RAND()*(1-0)+0),
           FLOOR(RAND()*(5-1)+1),
           FLOOR(RAND()*(200-1)+1),
           FLOOR(RAND()*(704-505)+505),
           FLOOR(RAND()*(200-1)+1),
           FLOOR(RAND()*(9-5)+5)
    from Deliveries D join
         Orders O
         on D.OrderID = O.OrderID
    where D.OrderDate = FLOOR(RAND()*(200-1)+1)

无论哪种方式,在表交付中,我都有大量随机生成的示例,只有OrderID和一个随机日期,我尝试从该表中选择一些日期并将它们插入到这个表中,这样订单日期和交付日期就会匹配。无论哪种方式,我的想法都是从表中随机选择一个ID,并将该记录的日期插入到Orders表中。当我尝试声明一个带有随机日期的变量并将其插入到参数列表中时,查询工作了,所以我一定是在这个连接中遗漏了一些东西。这要求我至少有1000条记录,所以这是一个非常长的过程,我不希望手动完成。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-21 11:02:04

如果您只想从Deliveries中提取随机数日期,那么在select查询中就不需要Orders。这应该足够了:

代码语言:javascript
复制
Insert into Orders (OrderCode, OrderDate, Insurance,QuickDelivery, PackageNumber, ClientID, AdressID, DeliveryID, OrderStatusID)
    Select SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 20),
           D.OrderDate,
           FLOOR(RAND()*(1-0)+0),
           FLOOR(RAND()*(1-0)+0),
           FLOOR(RAND()*(5-1)+1),
           FLOOR(RAND()*(200-1)+1),
           FLOOR(RAND()*(704-505)+505),
           FLOOR(RAND()*(200-1)+1),
           FLOOR(RAND()*(9-5)+5)
    from Deliveries D ;

您可以向select查询添加top (n)以插入一定数量的行(如果行可用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44666129

复制
相关文章

相似问题

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