本来我是用
Select distinct kind from kind order by id desc
如果按常规想法是这样写的
但是错误提示:ORDER BY 子句与 (id) DISTINCT 冲突。
             因为在SQL查询语句用distinct的话order by 这里一定要有查询出来的字段
             但我只想对kind进行distinct如果加了id的话肯定会查出所有记录而不是kind
             不同的记录
后来:网友说用
"select distinct a.kind from (select distinct id,kind,mun from kind where main='"+strKind+"'order by id desc) a
但这样查询出来的也没有按id排序
和select distinct kind from kind 效果是一样的
都是系统自动对kind字段进行名称排序如何才能实现只对kind字段不同的记录按他所在的id降序排列呢??
问了很多次了希望大家能够帮忙谢谢

解决方案 »

  1.   

    Create Table kind
    (ID Int,
     kind Int)
    Insert kind Select 1,1
    Union All Select 2,1
    Union All Select 3,2
    Union All Select 4,3
    Union All Select 5,2
    GO
    Select kind From kind Group By kind Order By Max(ID) Desc
    GO
    Drop Table kind
    GO
    --Result
    /*
    kind
    2
    3
    1
    */
      

  2.   

    "select distinct a.kind from (select distinct id,kind,mun from kind where main='"+strKind+"') order by id desc "
      

  3.   

    "select  kind from (select distinct id,kind,mun from kind where main='"+strKind+"') order by id desc "
      

  4.   

    zhbr(zbr),知之為知之,不知為不知
      

  5.   

    感觉楼主问的问题本身就是个问题:kind和ID这两个字段之间有何关系?是1:n,n:1还是m:n?不说清楚只能假定为m:n
    这样若有多条记录,其kind相同,ID不同,你打算取那条记录出来在排序中比较?取ID最大的,还是ID最小的,还是?举个例子可能说得明白些。假定有如下记录:
    kind ID
    -------
    1    1
    1    2
    1    3
    2    2
    可以看出kind有两个值:1和2。在查询结果中,你想1排在前面还是2排在前面?请给出更多、更明确的约束条件,否则我真想不出谁能解答你的问题假定kind相同而ID不同的记录,取ID最大的进行比较,那么可以写出如下SQL:select kind
      from (select kind, max(id) as id
              from 表名
             group by kind)
     order by id以上SQL语句在Oracle上测试通过,但sql server 2000不知道是否能通过,据说sql server 2005已经支持这样的写法了
      

  6.   

    再看了一下,paoluo的很简洁,确实是很好的办法
      

  7.   

    Select with kind from kind order by id desc
    行吗??