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

SQL逻辑解析:查询驾驶公司所有空客的飞行员nopil编号

这条SQL的实现逻辑拆解

首先明确涉及的3张表作用:

  • PILOTE表:飞行员基础表,NOPIL为飞行员唯一编号
  • AVION表:飞机基础表,NOAV为飞机唯一编号,NOMAV为飞机型号名称
  • VOL表:飞行班次表,记录每趟航班的执飞飞行员、执飞飞机等信息,NOPIL关联飞行员表,NOAV关联飞机表

这条SQL用的是全称量词转计数匹配的经典实现思路,要找「开过所有空客的飞行员」,等价于找「该飞行员开过的不同空客飞机数量 = 公司所有空客飞机总数量」的飞行员,逐段拆解如下:

1. 过滤空客的执飞记录

FROM vol v, avion a
WHERE v.noav = a.noav
AND nomav = 'Airbus'

这部分是将飞行班次表和飞机表做内连接,匹配每趟班次对应的飞机信息,然后只保留执飞机型为空客的记录,得到的临时结果是所有空客飞机的历史执飞记录,每条记录都带执飞飞行员编号、对应飞机编号。

2. 按飞行员分组统计开过的空客数量

GROUP BY nopil
HAVING COUNT(distinct noav) = (子查询结果)

按飞行员编号分组后,对每个飞行员统计他开过的不同空客飞机的数量:加distinct是为了避免同一个飞行员多次驾驶同一架空客被重复计数,保证每架空客只算一次。

3. 子查询获取空客总数量基准

(SELECT COUNT(*) FROM avion WHERE nomav = 'Airbus')

这部分直接统计当前公司所有空客飞机的总数量,作为匹配的基准值。

4. 结果过滤

当某个飞行员开过的不同空客数量刚好等于公司空客总数量时,就说明他驾驶过所有空客机型,符合查询要求。最外层加DISTINCT是冗余保险,避免分组后出现重复的飞行员编号。


内容的提问来源于stack exchange,提问作者Amine Zahrani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:48:02