当前位置:编程学习 > JAVA >>

mysql sql语句面试题

1.有一张person表,有字段id,name,sex,和score.
 要求 写一sql语句查询成绩排名前三的同学,包含并列成绩,并序号显示




2.请用SQL语句统计:表中字段A的值相同,并且字段B的值也相同的记录的条数,并将统计结果按字段A的降序列出


--------------------编程问答-------------------- 请问有人知道吗?? --------------------编程问答--------------------  第一题:
SELECT * FROM person a WHERE
  (SELECT COUNT(p_id) FROM person WHERE a.p_score<p_score)<3 ORDER BY p_score DESC
这是我的表名,你改一下就行了~
第二题表示没看懂~ --------------------编程问答-------------------- 兄弟能不能解释下你的第一题的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; --------------------编程问答-------------------- 楼主看看这样行不行
第一个
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; --------------------编程问答-------------------- mark ,这个有点技巧了 --------------------编程问答-------------------- 1.select * from person limit 0,3 order by score desc
2.select *,count(*) from TempTable group by A,B order by A desc;
--------------------编程问答-------------------- 1.select * from person  order by score desc limit 0,3 --------------------编程问答-------------------- 第二题试了都不对啊!!! --------------------编程问答-------------------- 求助第二题啊!!!!!!!! --------------------编程问答-------------------- select A,B, COUNT(*) from tempTable group by A,B order by A desc --------------------编程问答-------------------- 那样搞结果不正确~~~ --------------------编程问答-------------------- 第一题:

--------------------编程问答-------------------- 第二题我测了可以的,要么是我理解错了,要么就是你弄错了,你把相关数据和想要的结果都贴出来 --------------------编程问答-------------------- A字段和B字段的值相同的话,显示数量为2,如果不同就显示为1 --------------------编程问答-------------------- 怎么结果不正确了,你的问题有毛病吧,要求A降序了,你的显示结果还升序呢 --------------------编程问答-------------------- --------------------编程问答-------------------- 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;
已测试 --------------------编程问答-------------------- 你们都没看明白第二题的意思~~~ --------------------编程问答-------------------- 看我的 

先导入脚本
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 --------------------编程问答-------------------- 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
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,