当前位置: 首页 > news >正文

数据库基础(lab5:单表查询 三)

lab5:单表查询(三)

一、对查询结果排序 (ORDER BY)

ORDER BY 子句用于对 SELECT 语句返回的结果集进行排序。

  1. 基本语法

    • 作用: 根据一个或多个列对结果进行升序或降序排序。
    • 语法: ORDER BY 字段名 [ASC | DESC];
      • ASC: 升序(默认值,可省略)。
      • DESC: 降序。
    • 位置: ORDER BY 子句必须放在 FROMWHERE 子句之后。
  2. 示例

    • 查询1班所有同学的信息,并按成绩降序排列。
      SELECT *
      FROM tb_score
      WHERE class_id = 1
      ORDER BY score DESC;
      

二、分组查询 (GROUP BY)

GROUP BY 语句通常与聚合函数(如 COUNT(), MAX(), MIN(), SUM(), AVG())一起使用,将具有相同值的行组合成摘要行。

  1. 单独使用 (不推荐)
    • 作用: 如果单独使用,GROUP BY 会返回每个分组中的第一条记录,通常意义不大。
    • 语法: GROUP BY 字段名;
    • 示例: 对班级ID进行分组。
      SELECT * FROM tb_class GROUP BY class_id;
      

三、限制查询数量 (LIMIT)

LIMIT 子句用于限制 SELECT 语句返回的记录数,常用于分页。

  1. 基本语法

    • 作用: 指定返回记录的起始位置和数量。
    • 语法: LIMIT [offset,] row_count;
      • offset: 可选参数,指定从哪条记录开始返回(偏移量,第一条记录的偏移量是0)。
      • row_count: 指定要返回的记录数。
    • 位置: LIMIT 子句必须放在查询语句的最后,通常在 ORDER BY 之后。
  2. 示例

    • 查询成绩排名前4的学生:
      -- LIMIT 4 等同于 LIMIT 0, 4
      SELECT * FROM tb_score ORDER BY score DESC LIMIT 4;
      
    • 查询成绩排名第2到第5的学生(共4名):
      -- 写法一:LIMIT offset, row_count
      SELECT * FROM tb_score ORDER BY score DESC LIMIT 1, 4;-- 写法二:LIMIT row_count OFFSET offset (更清晰)
      SELECT * FROM tb_score ORDER BY score DESC LIMIT 4 OFFSET 1;
      

四、我遇到的问题与解决方案

1. 困惑:ORDER BY 语法 [ASC[DESC]]

  • 问题: 教程中 ORDER BY 的语法写为 [ASC[DESC]],看起来像是 DESC 包含在 ASC 中,令人费解。
  • 解析: 这是教程中的一个笔误。正确的语法应该是 [ASC | DESC],表示 ASCDESC 是两个互斥的选项,只能选择其一,或者都不选(默认为 ASC)。

2. 错误:WHEREORDER BY 的顺序

  • 问题: 在需要筛选和排序时,不确定 WHERE 子句应该放在哪个位置。
  • 解析: SQL子句有固定的执行和书写顺序。WHERE 子句用于在排序前过滤数据,因此必须写在 ORDER BY 子句之前。
    • 正确顺序: SELECT ... FROM ... WHERE ... ORDER BY ...;

3. 错误:LIMITORDER BY 的顺序

  • 问题: 将 LIMIT 子句写在了 ORDER BY 子句之前,导致语法错误或逻辑不符。
  • 解析: LIMIT 用于对最终结果集进行限制。因此,必须先通过 ORDER BY 对结果进行排序,然后再用 LIMIT 从排好序的结果中取出指定的行。
    • 错误顺序: ... LIMIT 1,4 ORDER BY score DESC;
    • 正确顺序: ... ORDER BY score DESC LIMIT 1,4;
http://www.jsqmd.com/news/42846/

相关文章:

  • ubuntu18解决 libc.so.6: version `GLIBC_2.28‘ not found
  • current linux
  • curl linux 命令
  • 堆贪心
  • 聚焦广州少儿编程机构实力榜TOP5!课程/师资/赛事成果大公开,高性价比品牌全测评
  • 20232409 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 2025年最受欢迎上门家教老师排行榜,上门家教/一对一家教老师口碑推荐榜
  • 是时候从 MySQL 转到 PostgreSQL 18 了
  • 小程序客服系统客服软件--如何接入ttkefu
  • count函数在oracle中的使用场景有哪些
  • Photoshop下载教程(附2025最新版安装步骤与完整图文讲解)
  • makefile入门3 目标自动生成与模式规则
  • 2025年不锈钢网带链板制造企业权威推荐榜单:不锈钢平顶链板/ 链板/304不锈钢链板源头厂家精选
  • 算法课 PA2 T1
  • 上海少儿编程哪家靠谱?高性价比机构综合测评,妙小程+4大优质机构,覆盖信奥赛与AI编程
  • OpenAI Responses API 的战略意图与技术架构:AI 智能体时代的技术范式变革
  • JDK17 ProcessBuilder执行脚本报错 error=13
  • 2025年高抗冲阻燃PC/ABS定制厂家权威推荐榜单:低灰分阻燃PC/ABS/ GB4943.1-2022阻燃PC/ABS/5G基站阻燃PC/ABS源头厂家精选
  • 关于 Visual Studio 类模板、文件权限信息配置
  • 从传统架构到AI原生:深度剖析企业AI落地的“三高”痛点与Serverless化解决方案
  • skynet(v1.4.0)学习笔记
  • 网站推荐!夸克资源网站里面的夸克资源社!
  • 【20章】MCP+A2A 从0到1构建商业级多Agent全栈应用
  • 2025北京少儿编程机构实力榜单!妙小程逻辑思维提升/信奥赛冲刺/全年龄段课程可选
  • 优化的高光谱解混算法实现
  • 2025.11.17——1绿2蓝
  • 2025年CNBD权威公开:淮安婚纱照拍摄十佳机构专业评测,弥素摄影工作室蝉联冠军宝座
  • cmake 安装 linux
  • clamav linux在服务器上如何部署
  • docker compose, minikube, kind, dev containers, wsl2