本帖最后由 daishaodong 于 2010-02-26 19:09:17 编辑

解决方案 »

  1.   

    if object_id('tb') IS NOT NULL DROP TABLE tb CREATE TABLE tb(a VARCHAR,b VARCHAR,c VARCHAR)
    GO
    INSERT INTO tb SELECT '1',2,'2' 
    UNION ALL SELECT '1','2','3'
    UNION ALL SELECT '1','2','4' 
    UNION ALL SELECT '2','2','4' 
    UNION ALL SELECT '3','2','4' select a.* ,(select   count(*)  from tb where c > a.c ) from tb a 
    (所影响的行数为 5 行)a    b    c                
    ---- ---- ---- ----------- 
    1    2    2    4
    1    2    3    3
    1    2    4    0
    2    2    4    0
    3    2    4    0(所影响的行数为 5 行)看一下就清楚了
      

  2.   

    select a.* from tb a where 1 > (select  count(*)  from tb where c > a.c ) 
    可以看成从a表依次取出一行数据,然后再查询整个a表看看比该行数据中的C值大的有多少行,如果不存在即<1时就显示该行,否则舍弃。
      

  3.   

    原来(select   count(*)  from tb where c > a.c )
    会产生多组结果,会把每行的比较结果统计出来。。
    谢谢各位。。