2015-05-08 63 views
-1

我是一個新手。 我有一個table1存儲User_id的另一個table2,存儲data_id的 Data_id的將從表2中隨機選擇,並且所有的user_id應該有所有的隨機data_id。數據庫隨機到很多很多

​​

我想從表2 3個隨機數據和寫入這些數據與USER_ID對錶3 它應該看起來像下面

        table3 
           user1 data2              
           user1 data3 
           user1 data4 
           user2 data2              
           user2 data3 
           user2 data4  
           user3 data2              
           user3 data3 
           user3 data4 
           user4 data2              
           user4 data3 
           user4 data4 
           user5 data2              
           user5 data3 
           user5 data4     

回答

0

立足@丹·古斯曼答案我把它具有一定的參考和重新修改了answer.If它工作正常,你只是檢查並讓我通過給數據NEW_ID()模式知道

declare @table1 TABLE (user_id varchar(10) NOT NULL) 
INSERT INTO @table1 
VALUES ('user1') 
    , ('user2') 
    , ('user3') 
    , ('user4') 
    , ('user5'); 
declare @table2 TABLE (data_id varchar(10) NOT NULL); 
INSERT INTO @table2 
VALUES ('data1') 
    , ('data2') 
    , ('data3') 
    , ('data4') 
    , ('data5'); 
;with cte as (
SELECT user_id 
     , data_id 
FROM @table1 
     , (SELECT TOP (4) 
           data_id 
         FROM  @table2 
         ORDER BY data_id 
        ) AS table2 
) 
    Select A.user_id,A.data_id from ( 
select c.user_id, 
      c.data_id, 
      ROW_NUMBER()OVER(PARTITION BY c.user_id ORDER BY c.user_id,c.data_id) RN 
from cte C 

)A 
    where A.Rn <> 1 
0

假設你想爲每個用戶相同的3個隨機data_id值,一種方法是用CROSS APPLY

CREATE TABLE dbo.table1 (user_id varchar(10) NOT NULL) 
INSERT INTO dbo.table1 
VALUES ('user1') 
    , ('user2') 
    , ('user3') 
    , ('user4') 
    , ('user5'); 
CREATE TABLE dbo.table2 (data_id varchar(10) NOT NULL); 
INSERT INTO dbo.table2 
VALUES ('data1') 
    , ('data2') 
    , ('data3') 
    , ('data4') 
    , ('data5'); 

SELECT user_id 
     , data_id 
FROM dbo.table1 
     CROSS APPLY (SELECT TOP (3) 
           data_id 
         FROM  dbo.table2 
         ORDER BY NEWID() 
        ) AS table2 
ORDER BY user_id 
     , data_id; 
+0

已經被我們所執行和CROSS APPLY沒有給予確切的結果@丹·古斯曼 – mohan111

+0

每一次改變你是說你想不隨機值每次查詢運行時更改?我知道你會使用查詢將結果插入到表3中,其中分配的值不會更改。 –