zoukankan      html  css  js  c++  java
  • 数据库 | SQL查询&LIMIT的用法

    前言

    select top n 形式的语句可以获取查询的前几个记录,但是 mysql没有此语法,mysql用limit来实现相关功能。

    LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。

    如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。

    万年不变学生表

    有2张表,学生表(student)基本信息如下

    【自动化/测开面试集锦系列】SQL查询

    科目和分数表(grade)

    【自动化/测开面试集锦系列】SQL查询

    查询前3名

    列出数学成绩前3名的学生(要求显示字段:学号,姓名, 科目,成绩)

    select *

    from grade

    where kemu = '数学'

    order by score

    desc

    limit 3

    【自动化/测开面试集锦系列】SQL查询

    先通过limit取出前三条记录,再结合student表查询

    select a.id, a.name, b.kemu, b.score

    from student a, grade b

    where a.id = b.id

    and kemu = '数学'

    order by score

    desc

    limit 3

    查询第2-3名记录

    limit后面如果只写一个整数n,那就是查询的前n条记录;如果后面带2个整数n 和 m,那么第一个数n就是查询出来队列的起点(从0开始),第二个是m是统计的总数目

    第2-3条记录,那么起点就是1, 第2-3名有2条记录,那么第二个参数就是2

    select a.id, a.name, b.kemu, b.score

    from student a, grade b

    where a.id = b.id

    and kemu = '数学'

    order by score

    desc

    limit 1, 2

    【自动化/测开面试集锦系列】SQL查询

    备注:limit是按条数取的,名次一样的,也算一个记录。如果取第5-14的记录,那就是limit 4 10

    查询第3到后面所有的

    select a.id, a.name, b.kemu, b.score

    from student a, grade b

    where a.id = b.id

    and kemu = '数学'

    order by score

    desc

    limit 3, 10000

    注意:有些资料上写的limit 3, -1 用-1代码最大值,这个是不对的,会报错,解决办法:随便写个非常大的整数

    【自动化/测开面试集锦系列】SQL查询

    英语课程少于80分的人

    统计英语课程少于80分的,显示 学号id, 姓名,科目,分数

    SELECT a.id, a.name, b.kemu, b.score

    FROM student a, grade b

    WHERE a.id = b.id

    AND b.kemu = '英语'

    AND b.score < 80

    【自动化/测开面试集锦系列】SQL查询

    统计每门课程不及格、一般、优秀

    课程不及格(<60)一般(60<= x <=80)优秀(>80)

    SELECT b.kemu,

    (SELECT COUNT(*) FROM grade WHERE score < 60 and kemu = b.kemu) as 不及格,

    (SELECT COUNT(*) FROM grade WHERE score between 60 and 80 and kemu = b.kemu) as 一般,

    (SELECT COUNT(*) FROM grade WHERE score > 80 and kemu = b.kemu) as 优秀

    FROM grade b

    GROUP BY kemu

    查找每科成绩前2名

    查找每科成绩前2名,显示id, 姓名,科目,分数

    先按科目和分数查询

    SELECT t1.id, t1.kemu,t1.score

    FROM grade t1

    ORDER BY t1.kemu,t1.score DESC

    【自动化/测开面试集锦系列】SQL查询

    再查找每个每科前面2名

    SELECT t1.id, a.name, t1.kemu,t1.score

    FROM grade t1, student a

    WHERE

    (SELECT count(*) FROM grade t2

    WHERE t1.kemu=t2.kemu AND t2.score>=t1.score

    )<=2

    and a.id = t1.id

    ORDER BY t1.kemu,t1.score

    DESC

  • 相关阅读:
    MemoryCache
    Page.Cache
    webform运行时弹出JavaScript的alert窗口
    server.Transfer不工作
    Server.Transfer VS Response.Redirect – Simplified
    Code Pages
    Unicode, UTF, ASCII, ANSI format differences
    Character Encoding in .NET
    分布式之消息队列复习精讲
    Understand:高效代码静态分析神器详解(一)
  • 原文地址:https://www.cnblogs.com/wyf0518/p/11325174.html
Copyright © 2011-2022 走看看