You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL词汇中row set和row的含义是否有区别?附考题场景验证

术语含义区分

首先明确两个术语在不同场景的定义:

  • 严格的计算机理论(关系代数)场景下:row set 指符合集合论要求的元组集合,默认去重,元素唯一;单独提及 rows 时指SQL查询返回的原始结果行,属于允许多个重复元素的多重集合。
  • 日常开发、考试题目场景下:二者没有强制区分,x rows in set 这类数据库客户端提示里的set只是对查询结果的统称,没有去重含义,大多数情况下row set和rows都指代未去重的原始查询结果。
    你提到的同行争议本质是场景差异,没有绝对的对错,完全要看语境,你给出的这道GATE考题默认按「row set指代未去重的原始结果」理解即可,这也是官方参考答案的默认前提。

题目选项分析

先重申表结构前提:

  • enrolled(student, course):主键为(student, course),同一学生可以选多门课,student字段允许重复
  • paid(student, amount):主键为student,每个学生最多一条记录,student字段唯一

四个查询的逻辑差异

  • Query1:从enrolled表筛选出在paid表存在缴费记录的学生,因为enrolled允许同一学生有多条选课记录,返回结果可能存在重复的学生值
  • Query2:从paid表筛选出在enrolled表存在选课记录的学生,因为paid的student唯一,返回结果不会有重复
  • Query3:对enrolled和paid做等值连接,返回匹配的学生值,同一学生有多少条选课记录就返回多少行,行数大于等于Query2的行数
  • Query4:用exists语法实现的逻辑和Query2完全等价,返回结果和Query2完全一致

选项判断

  • A错误:Query1返回结果可能有重复,和Query2、Query4的结果不可能完全一致
  • B正确:Query2和Query4逻辑完全等价,任意数据库下返回结果都相同;当同一学生选多门课时,Query1会返回重复的学生行,和Query2的结果不同
  • C错误:Query3的行数最少等于Query2的行数(每个符合条件的学生只选一门课的场景),不可能更少
  • D错误:题目明确说明不存在外键等约束,且查询为只读操作,不可能触发完整性约束违反

内容的提问来源于stack exchange,提问作者Abhishek Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:57:03