货名称   批次
A         1
A         2
B         2
B         3
C         1
C         2查询所有 希望 结果1、货名称只出现一次  货名称的搜索结果中不能重复
2、批次为所有当前货物最小的批次 意思就是 
结果只能出现一个A 但是A有两次批次 ,这时只能把批次较小的显示出来,
结果只能出现一个B 但是B有两次批次 ,这时只能把批次较小的显示出来,
。。
结果应该为 A    1
B    2
C    1

解决方案 »

  1.   

    select 货名称 , min(批次) 批次 from tb group by 货名称
      

  2.   

    create table tb(货名称 varchar(10),批次 int)
    insert into tb values('A' ,1)
    insert into tb values('A' ,2)
    insert into tb values('B' ,2)
    insert into tb values('B' ,3)
    insert into tb values('C' ,1)
    insert into tb values('C' ,2)
    goselect 货名称 , min(批次) 批次 from tb group by 货名称drop table tb/*
    货名称        批次          
    ---------- ----------- 
    A          1
    B          2
    C          1(所影响的行数为 3 行)
    */
      

  3.   

    select 货品名称,min(批次) 批次 from tb group by 货品名称
      

  4.   

    select 货名称 , min(批次) 批次 from tb group by 货名称
    或者
    select * from tb t where 批次=(select min(批次) from tb where 货名称=t.货名称)
      

  5.   

    create table tb(货名称 varchar(10),批次 int)
    insert into tb values('A' ,1)
    insert into tb values('A' ,2)
    insert into tb values('B' ,2)
    insert into tb values('B' ,3)
    insert into tb values('C' ,1)
    insert into tb values('C' ,2)
    go--如果只算货名称,批次这两个字段
    select 货名称 , min(批次) 批次 from tb group by 货名称--如果不止货名称,批次这两个字段
    select t.* from tb t where 批次 = (select min(批次) from tb where 货名称 = t.货名称)
    select t.* from tb t where not exists (select 1 from tb where 货名称 = t.货名称 and 批次 < t.批次)
    drop table tb/*
    货名称        批次          
    ---------- ----------- 
    A          1
    B          2
    C          1(所影响的行数为 3 行)
    */