如果列1中有10种类型(福州、厦门、泉州、等),列2中有3种类型(苹果、梨子、香蕉),我要用怎么样的一句语句从列1,2种随机取去200个数。即取出福州中苹果、梨子、香蕉随机各200个,厦门中苹果、梨子、香蕉随机各200个。备注:随机取出一种的语句我知道是
    select * from (select * from staff order by dbms_random.random)     where rownum < 200 

解决方案 »

  1.   

    select top 200 * from tb where 列1='福州' order by newid()select top 200 * from tb where 列1='厦门' order by newid()
      

  2.   

    用top + order by newid()
      

  3.   

    列1  列2  列3
    福州 苹果  目标A
    福州 苹果  目标B

    福州 梨子  目标C
    福州 梨子  目标d
    福州 梨子  目标e

    福州 香蕉  目标f
    福州 香蕉  目标g
    福州 香蕉  目标h

    厦门 香蕉  目标i
    厦门 香蕉  目标j

    厦门 苹果  目标k
    泉州 香蕉  目标l
    这个表结构
      

  4.   

    如果分开是可以取 ,不过要分成非常多次,例如
    select * from (select * from 表1 where 列1=福州 and 列2=苹果 order by dbms_random.random) 
    where rownum < 200 select * from (select * from 表1 where 列1=福州 and 列2=梨子 order by dbms_random.random) 
    where rownum < 200 select * from (select * from 表1 where 列1=福州 and 列2=香蕉 order by dbms_random.random) 
    where rownum < 200 select * from (select * from 表1 where 列1=厦门 and 列2=苹果 order by dbms_random.random) 
    where rownum < 200 select * from (select * from 表1 where 列1=厦门 and 列2=梨子 order by dbms_random.random) 
    where rownum < 200 select * from (select * from 表1 where 列1=厦门 and 列2=香蕉 order by dbms_random.random) 
    where rownum < 200 我想用一条语句就取出所有这些的各随机200个目标行
      

  5.   

    ;with t
    as
    (select rowid =row_number() over (partition by col1 order by col1,newid()),*
     from ta)
    select * from t where rowid <= 200
      

  6.   

    创建一个 uniqueidentifier 类型的唯一值。具体参考联机帮助.
      

  7.   

    没有插那么多数据,简单的测试
    CREATE TABLE dbo.P
    (
    ID INT IDENTITY(1,1)
    ,PName NVARCHAR(10)
    )
    GO
    INSERT INTO dbo.P
    SELECT N'福州' UNION ALL
    SELECT N'厦门' UNION ALL
    SELECT N'泉州'
    GO
    CREATE TABLE dbo.type
    (
    ID INT IDENTITY(1,1)
    ,TName NVARCHAR(10)
    )
    Go
    INSERT INTO dbo.type
    SELECT N'苹果' UNION ALL
    SELECT N'梨子' UNION ALL
    SELECT N'香蕉'
    GO
    SELECT top 200 TName
    ,(SELECT top 1 PName
    FROM dbo.P
    ORDER BY NEWID()
    )
    FROM dbo.type 
    ORDER BY NEWID()
      

  8.   

    select 列1,列2 from tb where 列1 in (select top 200 列1 from tb) order by 列1
    我在sql学习社区(www.sqlclub.cn)也已经回答你的问题