• 数据库 | 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

  • 相关阅读:
    leetcode231 2的幂 leetcode342 4的幂 leetcode326 3的幂
    leetcode300. Longest Increasing Subsequence 最长递增子序列 、674. Longest Continuous Increasing Subsequence
    leetcode64. Minimum Path Sum
    leetcode 20 括号匹配
    算法题待做
    leetcode 121. Best Time to Buy and Sell Stock 、122.Best Time to Buy and Sell Stock II 、309. Best Time to Buy and Sell Stock with Cooldown 、714. Best Time to Buy and Sell Stock with Transaction Fee
    rand7生成rand10,rand1生成rand6,rand2生成rand5(包含了rand2生成rand3)
    依图
    leetcode 1.Two Sum 、167. Two Sum II
    从分类,排序,top-k多个方面对推荐算法稳定性的评价
  • 原文地址:https://www.cnblogs.com/wyf0518/p/11325174.html
Copyright © 2020-2023  润新知