Table Person Id   Name Age High Weight
1    张三 15  163  50kg
2    李四 18  170  60kg
3    王五 19  165  55kg
4    张三 20  169  50kg使用sql语句查询,如何得到如下的结果:
1    张三 15  163  50kg
2    李四 18  170  60kg
3    王五 19  165  55kg
或者这样的结果:
2    李四 18  170  60kg
3    王五 19  165  55kg
4    张三 20  169  50kg
也就是说相同名字的人只显示1条记录,是哪条没关系.
用存储过程实现也可以.
Id   Name Age High Weight 每个字段都是必须要的.还请大哥大姐们帮帮小弟,非常感谢.

解决方案 »

  1.   

    用distinct关键字修饰。例:
    select distinct id,name,age,high,weight from student
      

  2.   

    select Id , Name ,Age, High ,Weight from Person where Id in ( select min(Id) from Person group by Name )
      

  3.   


    select * from Person where Id in (select min(Id) from Person  group by Name)
      

  4.   

    1,2,3楼的,你们这条语句用distinct照样返回全部记录,不信试试。
    我只想说楼主的查询毫无意义。你查询的是什么?虽然人名是重复的,可他们有不同的ID,实际上并不是同一个人,不是同一条记录,你希望过滤重名,那么只能针对姓名来查询, 如select distinct name from student你还希望加上其他所有字段,不重名,那是不可能的,因为其他的字段的值并不重复。 看你数据库里的两个张三,你希望列出他们的
    属性,还不能重名,那么数据库怎么知道你要的是第一个张三还是最后一个张三?他们其他的属性并不重复。这么说你明白了么?
      

  5.   

     
    create table person
    (
    Id varchar(30),
    name varchar(30),
    Age varchar(30),
    High varchar(30),
    Weight varchar(30),
    )
    go
    insert into person
    select '1','zhang san','15','163','50kg'
    union 
    select '2','li si','18','170','60kg'
    union 
    select'3','wang wu','19','165','55kg'
    union
    select '4','zhang san','20','169','50kg'
    union
    select '5','li si','22','179','70kg'
    go
    select A.* from person A
    where A.id in(select top 1 ID from person where person.name=A.name )drop table person
      

  6.   

    select * from Person where Id in (select min(Id) from Person  group by Name)
      

  7.   

    SQL code 
    select * from Person where Id in (select min(Id) from Person  group by Name) 
      

  8.   


    上边只是举个例子来实现这样的功能,其实我这是这样的,上边的name相当与文件的名称,文件有多个版本,界面上有两个显示的地方,一个显示文件的列表(相同的文件名显示1个,哪个是无所谓的),然后还有个界面,在点击某个文件名的时候显示它的版本列表.不是一点意义也没有.
    上边也提到了,只要name有重复的显示哪个是无所谓的.
      

  9.   

    lz,揭帖吧,答案已经给你了 8搂,当你的name重复时随便取的一个.