例如我现在有两个家庭,一个A家庭,一个B家庭,A家庭里面有4个成员,B家庭有3个成员
那么我怎么写才能select出A家庭下的任意一个成员?然后取出10条记录,记录允许有重复

解决方案 »

  1.   

    select top 1 成员 from 表 where 家庭='A' order by newid()
    什么叫10条记录?
      

  2.   

    select top 1 成员 from 表 where 家庭='A' order by newid()
    union all
    select top 1 成员 from 表 where 家庭='A' order by newid()
    union all
    select top 1 成员 from 表 where 家庭='A' order by newid()
    union all
    ......
      

  3.   

    select top 1 成员 from 表 where 家庭='A' order by newid()
    go 10
      

  4.   

    select top 10 成员 from 表 where 家庭='A'
      

  5.   

    SELECT TOP 10 b.成员
    FROM master..spt_values AS a,表 AS b 
    WHERE a.TYPE='P'AND a.number<10 AND b.家庭='A'
    ORDER BY NEWID()
      

  6.   

    create table tb(id int,col varchar(20))
    insert into tb select 1,'aa'
    insert into tb select 2,'bb'
    insert into tb select 3,'ccc'
    go
    SELECT top 10 a.id,a.col
    FROM tb A, sysobjects b
    order by NEWID()
    go
    DROP TABLE tb
    /*
    id          col
    ----------- --------------------
    2           bb
    3           ccc
    1           aa
    3           ccc
    3           ccc
    3           ccc
    1           aa
    2           bb
    2           bb
    3           ccc(10 行受影响)*/
      

  7.   

    SELECT TOP 10 d.成员
    FROM master..syscolumns AS a,master..syscolumns AS b,master..syscolumns AS c,表 AS c 
    WHERE  b.家庭='A'
    ORDER BY NEWID()在Top N,用一個足夠記錄的結果集與這表 生成笛卡集