表结构如下.....
id       name              name1             name2              name3            name4
1 aa         bb         aa         aa         aa        
2 aa         aa         aa         aa         aa        
3 aa         cc         aa         aa         aa        
4 aa         ee         aa         aa         aa        
5 aa         dd         aa         aa         aa        5行数据中.除了NAME1一列的值不一样.其它都一样.我要能过一条查询语句.把这五行显示为一行.但是我还需要得到显行的ID值.select distinct name,name2,name3,name4 from abc这样可以显示出来一行.但是看不到此行的ID...还有其它的方法吗?

解决方案 »

  1.   

    select min(id)id,name,name2,name3,name4,min(name1)name1
    from abc
    group by name,name2,name3,name4
      

  2.   

    id name name2 name3 name 4
    1   aa   aa    aa    aa这样的结果...值不相同的列可以不显出来来.
      

  3.   

    能不能不用GRUOP BY 呢?
      

  4.   

    select top 1 id,name,name2,name3,name4 from tb
      

  5.   

    再举个例子吧:id   name   sex  age  address
    1    张一  男    12     中国
    2    张一  男    15     中国
    3    张一  男    16     中国
    4    张一  男    17     中国
    5    张一  男    19     中国忽略年龄一例.其它的都一样.5行数据.只让他显出任何一行都行.并能带着ID.3 张一  男     中国
      

  6.   

    select
      *
    from
      tb t
    where 
      exists(select 1 from tb where id=t.id and name=t.name and  name1=t.name1 and name2=t.name2 and name3=t.name3 and name4=t.name4)
      

  7.   

    select
      *
    from
      tb t
    where 
      exists(select 1 from tb where id<>t.id and name=t.name and  name1=t.name1 and name2=t.name2 and name3=t.name3 and name4=t.name4)
      

  8.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2011-03-16 15:10:43
    -- Verstion:
    --      Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    -- Nov 24 2008 13:01:59 
    -- Copyright (c) 1988-2005 Microsoft Corporation
    -- Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([id] int,[name] varchar(4),[sex] varchar(2),[age] int,[address] varchar(4))
    insert [tb]
    select 1,'张一','男',12,'中国' union all
    select 2,'张一','男',15,'中国' union all
    select 3,'张一','男',16,'中国' union all
    select 4,'张一','男',17,'中国' union all
    select 5,'张一','男',19,'中国'
    --------------开始查询--------------------------
    select
     top 1 * 
    from
     [tb] t 
    where
     exists(select 1 from tb where [age]<>t.age and name=t.name and sex=t.sex and address=t.address)
    ----------------结果----------------------------
    /* id          name sex  age         address
    ----------- ---- ---- ----------- -------
    1           张一   男    12          中国(1 行受影响)
    */
      

  9.   

    select distinct name,name2,name3,name4,n = rownumber() over(order by getdate()) from abc
      

  10.   


    如果是现实任意一行的id的话
    select top 1 id,name,name2,name3,name4 from abc