select top n * from tablename order by newid()
随机选出前n条数据。

解决方案 »

  1.   

    select top 300000 * from mytable 
    where mobile in (select top 40 a.mobile from mytable a)
    and
    province in (select top in b.province from mytable b)
    mobile,province,city
      

  2.   

    select top 300000 * from mytable 
    where mobile in (select top 40 a.mobile from mytable a)
    and
    province in (select top 10 b.province from mytable b)
    mobile,province,city
      

  3.   

    select * from (select * 
    row_number() over(order by mobile) as rownum,
    rank()       over(order by mobile) as rnk,
    dense_rank() over(order by mobile) as densernk
    from mytable where province in (
    select  top 10 distinct province,newid() as id from mytable order by id)
    and mobile in 
    (select top 40 distinct mobile ,newid() as id from mytable order by id )
    order by mobile ,province) 
    Where rnk>=750
      

  4.   

    tylbud() ``这个是不对的!号段mobile是按前7位来算的!
      

  5.   

    select * from (select * 
    row_number() over(order by mobile) as rownum,
    rank()       over(order by mobile) as rnk,
    dense_rank() over(order by mobile) as densernk
    from mytable where province in (
    select  top 10 distinct province,newid() as id from mytable order by id)
    and mobile in 
    (select top 40 distinct mobile ,newid() as id from mytable order by id )
    order by mobile ,province) 
    Where rnk<=750你说MOBILE按前7位算,那看你的表结构中是如何存的了,如果分开存,你改一下字段就行了,否则你就用SUBSTRING函数就可以了。
      

  6.   

    虽然这样做还是不对!我怎么看怎么像oracle的写法啊!