Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不同的用户信息和受记录数限制的查询_Sql_Oracle_Exists - Fatal编程技术网

Sql 不同的用户信息和受记录数限制的查询

Sql 不同的用户信息和受记录数限制的查询,sql,oracle,exists,Sql,Oracle,Exists,我有两个表:用户Id和购物表: My_所需的表必须包含7000个不同的用户及其全部记录 计数应该是8000 购物桌是主桌。My_所需的表必须包含7000个不同的用户,其记录总数应为8000。从购物表中选择8000条随机记录,它将至少包含一次所有不同的用户Id INSERT INTO MY_SHOP ( SELECT S.* FROM Shopping S WHERE User_Id IN (SELECT * FROM User_Id) AND ROWNUM<=8000); 此代码返回

我有两个表:用户Id和购物表:

My_所需的表必须包含7000个不同的用户及其全部记录 计数应该是8000

购物桌是主桌。My_所需的表必须包含7000个不同的用户,其记录总数应为8000。从购物表中选择8000条随机记录,它将至少包含一次所有不同的用户Id

INSERT INTO MY_SHOP
( SELECT S.* FROM Shopping S WHERE User_Id IN (SELECT * FROM  User_Id) AND  ROWNUM<=8000);
此代码返回8000条记录,但不同的用户Id计数小于7000

我怎样才能修好它


事实上,没有其他购物信息

你的愿望不清楚。我想你需要8000个随机用户和一些购物信息

select user_id, 
       first_value(Purchased_Items_Id) over (partition by user_id) some_info --some shopping info
       wm_concat (Purchased_Items_Id) all_info -- all info
from 
   (select user_id, rownum rn
    from User_id
    ORDER BY dbms_random.value
    )
    join Shopping using(user_id)
where rn <= 8000

你想在第二栏写什么?什么购物信息?

此查询将随机返回8000个购物信息,但将包含所有7000个用户

select * FROM(

    SELECT user_id,  
         Purchased_Items_Id,
         row_number() over (partition by user_id order by dbms_random.value) as rnk
    FROM 
          USER_ID join Shopping using(user_id) 
    ORDER BY rnk

)

where rownum <= 8000

我认为,您已经使用了DISTINCT关键字:

INSERT INTO MY_SHOP
(SELECT S.Purchased_Items_Id, DISTINCT(S.User_Id) FROM Shopping S WHERE User_Id IN (SELECT * FROM User_Id) AND ROWNUM<=8000);

但我认为,在这种情况下,子选择是没有必要的,因为在这个选择中没有限制。

哦,我现在明白了。我将发布答案。此查询将随机返回8000个购物信息,但将包含所有7000个用户。正是我想做的!我现在就试试
INSERT INTO MY_SHOP
(SELECT S.Purchased_Items_Id, DISTINCT(S.User_Id) FROM Shopping S WHERE User_Id IN (SELECT * FROM User_Id) AND ROWNUM<=8000);