有一张表,结构如下:
序号  f1   f2
1     1    a
2     1    b
3     1    c
4     2    a
5     2    b
6     3    a
7     3    b
8     3    c
9     3    d序号是主键 ,要求按f1 分组,且f1相同的行显示出来是随机排序的,能不能用一条sql 语句完成呢?
知道的讲讲啊,谢谢了!

解决方案 »

  1.   

    selcet 序号,f1,f2  from tb group by 序号,f1,f2
      

  2.   

    DECLARE @TB TABLE([序号] INT, [f1] INT, [f2] VARCHAR(1))
    INSERT @TB 
    SELECT 1, 1, 'a' UNION ALL 
    SELECT 2, 1, 'b' UNION ALL 
    SELECT 3, 1, 'c' UNION ALL 
    SELECT 4, 2, 'a' UNION ALL 
    SELECT 5, 2, 'b' UNION ALL 
    SELECT 6, 3, 'a' UNION ALL 
    SELECT 7, 3, 'b' UNION ALL 
    SELECT 8, 3, 'c' UNION ALL 
    SELECT 9, 3, 'd'SELECT *
    FROM @TB 
    ORDER BY [f1],NEWID()
    /*
    序号          f1          f2
    ----------- ----------- ----
    3           1           c
    1           1           a
    2           1           b
    4           2           a
    5           2           b
    8           3           c
    9           3           d
    7           3           b
    6           3           a
    */
      

  3.   

    selcet 序号,f1,f2  from tb group by 序号,f1,f2 order by f1
      

  4.   

    selcet 序号,f1,f2  from tb group by 序号,f1,f2 order by f1,newid()
      

  5.   


    ---------------------------------
    --  Author: htl258(Tony)
    --  Date  : 2009-07-09 11:31:49
    ---------------------------------
    --> 生成测试数据表:tbIf not object_id('[tb]') is null
    Drop table [tb]
    Go
    Create table [tb]([序号] int,[f1] int,[f2] nvarchar(1))
    Insert tb
    Select 1,1,'a' union all
    Select 2,1,'b' union all
    Select 3,1,'c' union all
    Select 4,2,'a' union all
    Select 5,2,'b' union all
    Select 6,3,'a' union all
    Select 7,3,'b' union all
    Select 8,3,'c' union all
    Select 9,3,'d'
    Go
    --Select * from tb-->SQL查询如下:
    select *
    from tb 
    order by [f1],newid()
    /*
    序号          f1          f2
    ----------- ----------- ----
    2           1           b
    3           1           c
    1           1           a
    4           2           a
    5           2           b
    8           3           c
    9           3           d
    7           3           b
    6           3           a(9 行受影响)
    */
      

  6.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('tb') IS NOT NULL
      DROP TABLE tb
    GO
    CREATE TABLE tb(序号 int,f1 int ,f2 varchar )
    go
    insert into tb
    select  
    1 ,   1  ,  'a' union all select 
    2  ,  1 ,   'b' union all select
    3 , 1   ,  'c' union all select
    4  , 2  ,  'a' union all select
    5   , 2  ,  'b' union all select
    6  ,  3   , 'a' union all select
    7   , 3  ,  'b' union all select
    8   , 3   , 'c' union all select
    9  ,  3  ,  'd' 
    go
    select * from tb order by [f1],NEWID()
    /*--
    3 1 c
    1 1 a
    2 1 b
    4 2 a
    5 2 b
    8 3 c
    6 3 a
    7 3 b
    9 3 d----------------*/
      

  7.   

    select * from tb order by [f1],NEWID()
    --这里先按F1排序了 然后在此基础上 进行随机排序 指的是另外2列的随机