请问一个SQL语句的写法(效率优先)有一张表有字段A(主键),B,C
我想找A和B都最大的那条数据,也就是说先看B字段最大的那条数据,如果B字段最大的那条数据
有多条,就看A字段比较大的那一条,请问该怎么写?
A   B   C
---------
1   2   aaa
2   2   bbb
3   3   ccc
4   3   ddd
5   1   eee
6   2   fff我想要的数据是第四条
4   3   ddd

解决方案 »

  1.   

    select top 1 * from tb order by b desc ,a desc
      

  2.   

    用top 1+order by的话,因为数据量太大,估计效率会很低。能用max(B),max(A)来实现吗?
      

  3.   

    只要在A/B两列建了索引,用直接排序的方法效率是最低的,用 MAX 效率要差,因为它又牵涉到函数运算.
    你可以试试
    select top 1 * from tb order by a desc,b desc
    与你所想的用MAX函数的运行速度哪个更快一些.
      

  4.   


    select A,B,C from tb
    where A=(select max(a.A) from 
             (select A,B,C  from @tb
              where B=(select max(B) from @tb)
             ) a
            )
      

  5.   

    select top 1 * from tb order by b desc ,a desc
    这个要好