2015-05-08 194 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中,其中分配的值不会更改。 –