我写的一条SQL语句select top 5 Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1 Order by TPost desc得到下面这个;
我现在只要让它ID相同的只显示第一个;要怎么改那句SQL呢;那些条件不变的;

解决方案 »

  1.   

    select top 5 distinct Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1 Order by TPost desc加上distinct参考
      

  2.   

    一般ID不是唯一的吗?为什么要搞个ID可以相同呢?
      

  3.   

    select top 5 Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1 
    and Id in (select max(Id) from V_F_PaintList group by [Name])
    Order by TPost desc
      

  4.   

    是group by  Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder 这些!!!!!!
      

  5.   

    order by 之前加 group by id
      

  6.   

    select top 5 distinct Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1 groud by NowSale Order by TPost desc没经过验证。可以试试。。如果一楼的不行。那就要考虑分组了。。
      

  7.   

    既然你每个id只要一条记录,你就要保证其他列也有标准唯一,从你的截图中看引起出现多条记录是由于NowSell字段不同引起,那你就要有标准让他唯一,比如只去NowSell值最大的那条。select distinct Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList t1 where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1  
    and NowSell = (select max(NowSell) from V_F_PaintList where id=t1.id)
    Order by TPost desc
      

  8.   

    11楼你这个很对意思!..我就要那个NowSell的最小值那条
      

  9.   

    那你就把MAX改成MIN就行了select distinct Id,Name,LanguageEh,ImageAdd,IsSell,NowSale,IsFrame,IsSpecials,IsOrder from V_F_PaintList t1 where LanguageEh='EN' and IsSell=1 and IsFrame=0 and IsOrder=0 and IsHomeShow=1   
    and NowSell = (select min(NowSell) from V_F_PaintList where id=t1.id)
    Order by TPost desc
      

  10.   


    --我已测试过是没有问题的
    --你这里Where条件太多了,我没有写,你自己加上吧,
    --可以加在最后,其它条件可以根据你的需求自己来搞定
    --另外,字段我也没写全,太多。麻烦
    SELECT TOP 5 Id, 
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 Name FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS Name,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 LanguageEh FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS LanguageEh,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 ImageAdd FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS ImageAdd,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 ImageAdd FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS ImageAdd
     FROM V_F_PaintList  ur
      

  11.   

    distinct  去掉重复。。
    同问ID不是唯一的??
      

  12.   

    晕。检查了下发现最后一句关键语句就没拷过来。
    --我已测试过是没有问题的
    --你这里Where条件太多了,我没有写,你自己加上吧,
    --可以加在最后,其它条件可以根据你的需求自己来搞定
    --另外,字段我也没写全,太多。麻烦
    SELECT TOP 5 Id, 
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 Name FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS Name,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 LanguageEh FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS LanguageEh,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 ImageAdd FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS ImageAdd,
    (CASE WHEN COUNT(id)>0 
    THEN 
    (SELECT TOP 1 ImageAdd FROM V_F_PaintList  ur2 WHERE ur2.id=ur.id)
    ELSE
    NULL
    END) AS ImageAdd
     FROM V_F_PaintList  ur
    GROUP BY ur.id ORDER BY ur.id 
      

  13.   

    distinct   与 group by 都可以试试