跳到正文
IGCSE·Tuition
资讯与通信科技(ICT) · 课程

用第二排序键排序记录

报表里的记录可能完全正确,却因为排列顺序不对而失分。

本页内容
  1. 两个排序键怎么运作?
  2. 完整例题
  3. 要避免的错误
  4. 自测
  5. 接下来学什么

用第二排序键排序,是先按一个字段排列记录,两条记录在这个字段上相同时,再按第二个字段排列。任务通常写成“先按社团排序,再按出席次数排序,最多的在前”。

本课属于数据库查询与报表,接在应用多重条件之后。

两个排序键怎么运作?

软件先按主排序键排序,然后只在主值相同的记录之间,用第二排序键重新排列。

  1. 在任务中划出每一条排序指示,并记下各自是升序还是降序。
  2. 按任务列出的顺序放置排序键:先提到的是主键。
  3. 分别设定每个键的方向。
  4. 检查结果:先看主列,再看每一组内部的第二列。

完整例题

使用模块页面里虚构的 Harbour Hill Clubs 表。

任务:先按 Club 从 A 到 Z 排序,再按 Sessions 排序,最多的在前。

**第 1 步,排序键:**主键 Club 升序,第二键 Sessions 降序。

**第 2 步,分组:**按字母顺序是 Chess、Drama、Robotics。

**第 3 步,Chess 内部:**Imran (12)、Dewi (11)、Hui (10)、Aiman (8)。

**第 4 步,Drama 内部:**Bella (12)、Chen (9)、Gopal (6)。

**第 5 步,Robotics 内部:**Farah (12)、Evan (7)、Jia (5)。

完整顺序是 Imran、Dewi、Hui、Aiman、Bella、Chen、Gopal、Farah、Evan、Jia。

要避免的错误

把排序键放反,让 Sessions 变成主键:

Sessions 降序,再 Club 升序。

列表以 Bella (12)、Farah (12)、Imran (12) 开头,接着是 Dewi (11),各社团被混在一起。

记录都在,但社团分组被打乱了。任务要的是先分组。改正方法是把 Club 放第一,Sessions 放第二。一个快速测试:读一遍 Club 这一列,它应该只变化三次。

自测

1. 按 Year 升序排序,再按 Name 从 A 到 Z。写出顺序。

显示答案

Year 9:Dewi、Gopal、Jia。Year 10:Aiman、Chen、Farah、Imran。Year 11:Bella、Evan、Hui。Dewi、Gopal、Jia、Aiman、Chen、Farah、Imran、Bella、Evan、Hui。

2. 按 Fee 降序,再按 Name 从 A 到 Z。排在最前面的三条记录是哪些?

显示答案

Fee 为 60 的成员是 Evan、Farah 和 Jia,按字母顺序。**Evan、Farah、Jia。**接下来是 RM45 的一组:Bella、Chen、Gopal。

3. 一位学生把 ID 存成文本并升序排序。ID 1 到 10 会以什么顺序出现?

显示答案

文本逐个字符排序,所以“10”紧跟在“1”后面。顺序是 **1、10、2、3、4、5、6、7、8、9。**把 ID 存成数字就能解决。

接下来学什么

下一课,在支持的情况下创建计算字段,让报表能显示由现有字段算出的值。只读 SQL 练习实验室能让你看到查询返回的顺序,练习题则综合了所有技能。

排序错误很容易在不知不觉中重复出现,这时一对一线上 ICT 补习会有帮助,因为老师可以在你选择设置时看着你操作。

常见问题

什么是第二排序键?

它是在第一个字段值相同的记录之间用来排序的字段。主排序键负责主要排序,第二排序键只改变主值相同的那一组内部的顺序,例如同一个社团的成员之间。

为什么我的数字排成了 1、10、2、3?

这个字段被存成了文本,软件逐个字符排序。文本“10”以 1 开头,所以排在 2 前面。排序前请把数字存成数字类型,或按任务关于字段类型的指示操作。

升序就是最小的在前面吗?

是的。升序(ascending)从最小到最大,文本则是 A 到 Z。降序(descending)从最大到最小,或 Z 到 A。要看清任务的措辞,“出席最多的在前”就是对该字段降序。

更新于:

下一步

如果排序结果有时与你预期的顺序不同,一对一老师可以陪你追查软件先用了哪个排序键,以及原因。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生