1.有一张person表,有字段id,name,sex,和score.
 要求 写一sql语句查询成绩排名前三的同学,包含并列成绩,并序号显示
2.请用SQL语句统计:表中字段A的值相同,并且字段B的值也相同的记录的条数,并将统计结果按字段A的降序列出

解决方案 »

  1.   

     第一题:
    SELECT * FROM person a WHERE
      (SELECT COUNT(p_id) FROM person WHERE a.p_score<p_score)<3 ORDER BY p_score DESC
    这是我的表名,你改一下就行了~
    第二题表示没看懂~
      

  2.   

    兄弟能不能解释下你的第一题的sql,我都没杂看懂啊
      

  3.   

     select * from person where  score = (select score form person limit 3 order by score desc);
    不知道包含重复成绩是什么意思。
    是将一个分数的所有人都显示出来。
    99  88 88 88 76 54 13 
    取前三名是取  99 88 88 还是  99 88 88 88 76
    前者感觉星不动。所以....2,
    select 字段A,  count(字段A) from TempTable  where 字段A = (select 字段A from TempTable where 字段A=字段B ) order by 字段A desc;
      

  4.   

    楼主看看这样行不行
    第一个
    select identify(1,1),person.* from person order by score desc limit 3;
    第二个
    select 字段A,字段B,count(distinct(字段A,字段B)) as 条数 from TempTable  order by 字段A desc;
      

  5.   

    1.select * from person limit 0,3 order by score desc
    2.select *,count(*) from TempTable group by A,B order by A desc;
      

  6.   

    1.select * from person  order by score desc limit 0,3
      

  7.   

    select A,B, COUNT(*) from tempTable group by A,B order by A desc
      

  8.   

    1.select * from person  where person.score in (select t.score from (select distinct score from person limit 0,3 ) as t) order by id;
    2.select A,B,count(*) from TempTable group by A,B order by A;
    已测试
      

  9.   

    看我的 先导入脚本
    CREATE TABLE `my_test` (
      `a` int(20) DEFAULT NULL,
      `b` int(20) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert  into `my_test`(`a`,`b`) values (1,1),(1,2),(2,2),(3,3),(3,3),(3,4),(2,2),(2,3);然后执行这条sql
    SELECT a,b,COUNT(a) FROM my_test WHERE a=b GROUP BY a ORDER BY a 
    这个就是你想要的结果
    DESC
      

  10.   

    2.
    select T1.A,T1.B,count(1) from TempTable T1,
    (select distinct T3.A,T3.B from TempTable T3) T2
    where T1.A = T2.A
    and T1.B = T2.B
    group by T1.A,T1.B
    order by T1.A