淘先锋技术网

首页 1 2 3 4 5 6 7

如何操作使mysql某个表查询只查前十条记录的命令?

SELECT * FROM category LIMIT 3, 5\x0d\x0aLIMIT 3, 5 这一句是关键3代表第几条数据之后开始,5代表差出几条结束(这里以mysql中的category表) \x0d\x0a显示10条:\x0d\x0aSELECT * FROM category LIMIT 0,10 \x0d\x0a或者\x0d\x0aSELECT * FROM category LIMIT 10

MySql怎么查询前10条数据?

MYSQL没有SELECT TOP的语法,你得用用LIMIT

select * from 表名 limit m,n;

从m开始,取n条

mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等

学生表名为:student, 单科成绩的字段为:subject。学生名字为:name

查询单科成绩前十:mysql语句为:select * from student order by subject desc limit 10;

查询总分成绩前十:mysql语句为:select sum(subject) subject,name from student group by name order by subject desc limit 10;

注:

select sum(subject) subject,name

这句的意思是:sum(subject) subject 把单科成绩加总用subject 来命名(就是总成绩),name就是一个字段,这里只有两个字段。

group by name order by subject : group by name 的意思按照名字这一栏来分组,当然,学生成绩表名字有可能是一样的,按照学号是最准确的,这里只是举个例子。

order by subject  这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。

select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;

扩展资料:

学生成绩表常用sql

1. 在表中插入符合主键

[sql]

/*成绩表*/

CREATE TABLE SC

(

Sid INT REFERENCES Student(Sid), /*学生学号*/

Cid INT REFERENCES Course(Cid), /*课程编号*/

Score INT NOT NULL, /*课程分数*/

PRIMARY KEY(Sid,Cid) /*将学生学号和课程编号设为复合主键*/ 

)

2. 查询各科成绩最高分,最低分以及平均分

[sql]

SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average 

FROM Course c JOIN SC s ON c.Cid = s.Cid 

GROUP BY c.Cname 

/*此处应注意,若不按照c.Cname进行分组,SQL语句会报错,c.Cname在SELECT语句中不合法,因为它并未出现在聚合函数中也没有出现在GROUP BY语句中*/

3. 查询平均成绩大于80分的学生姓名以及平均成绩

[sql]

SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC 

ON Student.Sid=SC.Sid 

GROUP BY Sname

HAVING AVG(Score)80 

/*以聚合函数为条件进行删选只能在HAVING语句中进行,WHERE语句不支持聚合函数*/

4. 按总分为学生排名,总分相同名次相同

[sql]

SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname,

ISNULL(SUM(ss.Score),0) 

FROM Student s LEFT JOIN SC ss 

ON s.Sid = ss.Sid 

GROUP BY s.Sname 

ORDER BY SUM(ss.Score) DESC

/*RANK()是SQL Server的一个built-in函数,语法为

RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/

5. 查询总分在100至200之间的学生姓名及总分

[sql]

SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid

GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200

MySQL-获取前10%数据

这里记录一个问题

在MySQL中,我们要查看前3条记录的话,是使用limit

简单的分页也可以使用力limit来完成

这都比较常见,如果我们想要获取数据的前10%呢?

在SQLServer中,我们可以直接使用top 10 percent 就可以了,但在MySQL中,我们得另想办法

前10%的数据,我们得知道数据一共有多少,那我们就知道该获取多少条记录了,然后还得知道记录的行号。

@row_num这个变量,是按行来的,所以我们再where条件中使用的时候,他是最后1条记录的行号,及总记录数

总记录数乘以50%,就是前50%的记录数,这样,我们就获取了前X%数据,做完收工。

mysql 查询每门成绩的前十名

CREATE PROCEDURE GetScRank()

BEGIN

  DECLARE SigDone INT DEFAULT 0;

  DECLARE Cno_ BIGINT;

  DECLARE Cur1 CURSOR FOR SELECT DISTINCT Cno FROM Score;

  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET SigDone = 1;

  OPEN Cur1;

  TRUNCATE scResult;

  FETCH Cur1 INTO Cno_;

  WHILE NOT SigDone DO

    INSERT INTO scResult (Sno,Cno,Sc) (SELECT DISTINCT Sno,Cno,Sc FROM Score WHERE Cno =Cno_ ORDER BY Sc DESC LIMIT 10);

    COMMIT;

    FETCH Cur1 INTO Cno_;

  END WHILE;

  CLOSE Cur1;

END

用游标效率应该还行吧.

mysql如何查询各年的前10条记录

select * from (

select

tablename_tmp.*,

@rownum:[email protected]+1 ,

if(@pyear=tablename_tmp.year,@rank:[email protected]+1,@rank:=1) as rank,

@pyear:=tablename_tmp.year 

from (

select * from tablename order by year asc

)

tablename_tmp ,

([email protected]:=0 ,[email protected]:= null ,@rank:=0) a

)

result where rank =10

;

你这里其他条件判断是前十条记录吗?上面是每年各取十条。