2017-06-21 67 views
0

我必須用測試數據填滿數據庫,而我的數據庫與交付有關。這就是我想要做的事:SQL - 我在做什麼這個「插入選擇」錯誤查詢

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) 

無論哪種方式,在表中交付我有一大堆隨機生成的例子,只是將訂單和隨機日期,和我想選擇一些日期該表並將它們插入到這個表中,所以訂單日期和交貨日期相匹配。無論哪種方式,我的想法是從表中選擇一個隨機ID,並獲取該記錄的日期並將int插入到Orders表中。當我試着用隨機日期聲明一個變量並將其插入到參數列表中時,查詢就起作用了,所以我必須通過這個連接或其他東西丟失一些東西。我需要至少有1000條記錄,所以這是一個非常漫長的過程,我不希望手動執行。提前致謝。

+1

我不知道你的問題是什麼。你的查詢看起來在語法上是正確的。顯然你有一些問題,但我不能確定問題是什麼。 –

回答

0

如果您只想從Deliveries中獲取隨機日期,那麼您在select查詢中不需要Orders。這應該是足夠了:

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 ; 

您可以添加top (n)select查詢插入一定數量的行(如果該行可用)。

+0

這工作,謝謝你,我猜想我太過於加入連接。 – WhatAmIDoing