mysql怎么知道写名次 MySQL查找姓名和成绩

如何用一条SQL语句查询某人所在名次,注意,是名次。 mysql

1、首先新建一个test数据库,在数据库里创建一张data数据表,在表内插入5条测试数据。

创新互联网站建设服务商,为中小企业提供做网站、网站制作服务,网站设计,网站托管维护等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联

2、新建一个php文件,命名为test.php,用于讲解使用sql查询数据表前三天的数据。

3、在test.php文件内,使用header()方法设置文件执行的编码为utf8,避免输出中文时产生乱码。

4、在test.php文件内,使用数据库账号、密码、名称,利用mysqli创建数据库连接,并使用set_charset()方法设置获得数据的编码为utf8,同时,使用if语句判断连接数据库是否成功,如果连接不成功,输出错误信息。

5、在test.php文件内,编写sql语句,使用TO_DAYS()分别获得当前的天数和数据表ctime字段数据的天数,两者之差小于3天,即前三天,以此为条件查询data数据表的数据,使用query()执行sql语句,同时使用fetch_all()方法将获得的数据资源转换为二维数组。

6、在test.php文件内,使用foreach方法遍历上一步获得的二维数组,输出数据的id和姓名。

7、最后在浏览器运行test.php文件,查看程序执行的结果,可见,成功从数据库获得前三天的数据。

sql语言,有一个成绩单表,已知学生姓名,如何查询名次?

1、创建测试表,

create table test_score(name varchar2(20), score number);

2、插入测试数据

insert into test_score values('张三', 85);

insert into test_score values('李四', 90);

insert into test_score values('王二', 95);

insert into test_score values('吴七', 83);

insert into test_score values('李六', 66);

commit;

3、查询表中全量数据,select t.*, rowid from test_score t;

4、编写sql,根据学生姓名,查询学生名词,以学生‘李四’为例,成绩排名第二;  select t.* from (select t.*, rank() over(order by score desc) rk from test_score t) t where t.name = '李四';

mysql如何表示排名4~6名

按照并列且占位。

mysql按照并列且占位的规则来排名,例如96分应该是第四名,95分是第6名。

mysql排名并列即相同的值,相同的值保留重复名次,遇到下一个不同的值,跳跃到总共的排名。

mysql 中如何获取分类平均值的名次? 比如10个班级的平均分,按照班级名称排序,后面跟着名次。

建议你用程序来完成。这个涉及计算列排序,排序的多重方式,各个数据库估计写法都不同。

---

如果你硬要用sql完成可以用如下方式:

记住只在mysql里能这么写。幸好你的是mysql

---------

SELECT M.class,M.AvgS,M.pm

FROM

(

SELECT A.*,@rank:=@rank+1 as pm

FROM

(

SELECT class,avg(score) as AvgS FROM test.chengji GROUP BY class ORDER BY AvgS DESC

) A ,(SELECT @rank:=0) B

) M

ORDER BY M.class

--------

pm 代表排名

---

结果类似:

class AvgS pm

-----------------------

'1', '47.0000', '1'

'2', '12.0000', '3'

'5', '38.5000', '2'

------------------------

mysql查询我在各科考试中的名次

借题主答复另一个问题的答案:

表一(考试名称表):

CREATE TABLE `zm_exam` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id,考试表',

`title` varchar(120) NOT NULL DEFAULT '' COMMENT '考试名称',

`t_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '外键,老师表',

`cg_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '外键,班级表',

`exam_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '考试时间',

`status` tinyint(2) unsigned NOT NULL DEFAULT '1' COMMENT '1正常,2禁用',

`type` tinyint(2) unsigned NOT NULL DEFAULT '1' COMMENT '考试类别,1单科,2全部',

`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '考试说明',

`createdtime` datetime DEFAULT '0000-00-00 00:00:00',

`changedtime` datetime DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

表二(考试科目记录表):

CREATE TABLE `zm_score` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id,成绩表',

`e_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '外键,考试表',

`c_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '外键,科目表',

`stu_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '外键,学生表',

`grade` float unsigned NOT NULL DEFAULT '0' COMMENT '成绩分数',

`status` tinyint(2) unsigned NOT NULL DEFAULT '1' COMMENT '1正常,2禁用',

`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '说明',

`createdtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

`changedtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8

问题:查出每次考试中,该学生在此次考试中的分数排名:

-- a表、b表同为一模一样的临时表

-- 通过比对a、b两表的考试记录id考试分数个数( WHERE a.id = b.id AND a.grade  b.grade)

SELECT *,

(SELECT COUNT(*)+1 FROM 

(SELECT e.`id`,e.`title`,e.`remark`,s.`grade`,s.`stu_id`,e.`exam_time` FROM zm_student stu,zm_exam e,zm_score s 

WHERE stu.`id` = 132 AND stu.`status` = 1 AND stu.`c_g_id` = e.`cg_id` AND e.`type` = 1 AND e.`id` = s.`e_id` AND s.`status` = 1 ORDER BY s.`grade` DESC) AS b WHERE a.id = b.id AND a.grade  b.grade) AS paiming -- 名次

FROM 

(SELECT e.`id`,e.`title`,e.`remark`,s.`grade`,s.`stu_id`,e.`exam_time` FROM zm_student stu,zm_exam e,zm_score s 

WHERE stu.`id` = 132 AND stu.`status` = 1 AND stu.`c_g_id` = e.`cg_id` AND e.`type` = 1 AND e.`id` = s.`e_id` AND s.`status` = 1 ORDER BY s.`grade` DESC) AS a WHERE a.stu_id = 132 ORDER BY id DESC;

mysql查询用户的排名

SELECT

obj.user_id,obj.score,@rownum := @rownum + 1 AS rownum

FROM

(

SELECT

user_id,

score

FROM

`sql_rank`

ORDER BY

score DESC

) AS obj,

(SELECT @rownum := 0) r

执行的结果如下图:


标题名称:mysql怎么知道写名次 MySQL查找姓名和成绩
标题URL:http://ybzwz.com/article/docgggh.html