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

如何通过单条SQL查询获取关联飞机或船只的行程数据?

解决方法:单条SQL获取关联飞机/船只或两者的行程

这问题其实挺常见的,咱们可以用两种实用的思路来实现,我给你详细拆解下:

方法一:用UNION合并结果

UNION会自动合并两个查询的结果并去除重复行,刚好匹配你要的「关联飞机、船只或同时关联两者」的需求——如果某个行程同时关联了飞机和船,两个子查询都会返回它,UNION会帮你合并成一条唯一的记录。

对应的SQL语句:

SELECT trip.* 
FROM trip 
INNER JOIN plane ON plane.trip_id = trip.id
UNION
SELECT trip.* 
FROM trip 
INNER JOIN boat ON boat.trip_id = trip.id;

方法二:用LEFT JOIN加条件过滤

通过LEFT JOIN把主表和两个子表关联起来,再筛选出至少有一个子表记录存在的行程,最后用DISTINCT去重,避免同时关联两个子表时出现重复的行程记录。

对应的SQL语句:

SELECT DISTINCT trip.* 
FROM trip
LEFT JOIN plane ON plane.trip_id = trip.id
LEFT JOIN boat ON boat.trip_id = trip.id
WHERE plane.id IS NOT NULL OR boat.id IS NOT NULL;

两种方法的小差异

  • 如果子表数据量不大,两种方法都能顺畅运行;
  • 如果子表数据量较大,UNION的性能可能更优,因为它是分别执行两个小查询再合并,而LEFT JOIN会先生成包含所有关联组合的临时结果集,再去重过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:54:41