有个产品表和一个产品图片表 一个产品对应多张图片 做左连接后得到以下数据
id(主键) 产品名称   产品图片
1        空调       1w.jpg
1        空调       2.jpg
1        空调       3d.jpg
2        冰箱       NULL(没有产品图片)
3        电视       11.jpg
3        电视       12.jpg我想把重复行去掉 图片可以随便得到一张就可以
如:想要的结果
id(主键) 产品名称   产品图片
1        空调       3d.jpg
2        冰箱       NULL
3        电视       11.jpg能不能用一条sql语句直接查出来 不行的话有什么办法没!谢谢

解决方案 »

  1.   

    主键也重复?select id,产品名称,max(产品图片)
    from ta
    group by id,产品名称
      

  2.   


    话说你的主键能重复??select id,[产品名称],max([产品图片]) 
    from ta 
    group by id
      

  3.   

    select * from tb t where 产品图片=(select max(产品图片) from tb where id=t.id)
      

  4.   

    SELECT * FROM TB T
    WHERE NOT EXISTS(SELECT 1 FROM TB WHERE id=T.ID AND 产品图片>T.产品图片)
      

  5.   

    http://topic.csdn.net/u/20080626/00/43d0d10c-28f1-418d-a05b-663880da278a.html?85256
      

  6.   

    你的主键怎么会有重复的???---------------------------------------------
    --> Author : js_szy
    --> Target : 各位大大,小卒就是想要一朵花
    --> Date   : 2009-12-01 11:34:04
    --> Version: SQL Server 2005
    ---------------------------------------------
        
    --> 测试数据: @tb
    declare @tb table (id int,产品名称 varchar(4),产品图片 varchar(6))
    insert into @tb
    select 1,'空调','1w.jpg' union all
    select 1,'空调','2.jpg' union all
    select 1,'空调','3d.jpg' union all
    select 2,'冰箱',null union all
    select 3,'电视','11.jpg' union all
    select 3,'电视','12.jpg'select * from @tb t
    where not exists(select * from @tb where id=t.id and 产品图片>t.产品图片)id          产品名称 产品图片
    ----------- ---- ------
    1           空调   3d.jpg
    2           冰箱   NULL
    3           电视   12.jpg(3 行受影响)
      

  7.   


    select * from @tb a where 产品图片= (select top 1 产品图片 from @tb where a.id=id)
      

  8.   

    select id,产品名称,(select top 产品图片 from tb) as 产品图片 from tb 试一下这个
      

  9.   


    ID是关联出来的吧 产品ID
      

  10.   

    谢谢 大家 我图片那里其实保存的是图片路径 如../imges/dd.jpg这样的 max进行比较的话会出问题吗?
      

  11.   

    MAX的话不会出问题的, 除非你的字段类型是TEXT, IMAGE之类的` 出问题的话你CAST成字符串类型肯定是可以的
      

  12.   

    create  table t(id int,产品名称 text,产品图片 varchar(60))
    insert into t
    select 1,'空调','../imges1w.jpg' union all
    select 1,'空调','../imges2.jpg' union all
    select 1,'空调','../imges3d.jpg' union all
    select 2,'冰箱',null union all
    select 3,'电视','../imges11.jpg' union all
    select 3,'电视','../imges12.jpg'--语句
    select id,产品名称,max(产品图片) from(
    select id,产品名称,convert(varchar(100),产品图片) as 产品图片
    from t) a
    group by id,产品名称
    order by id--结果
    1 空调 ../imges3d.jpg
    2 冰箱 NULL
    3 电视 ../imges12.jpg