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

如何筛选WorkOrder、EngOrder、PartNo重复但InstPosition不同的行?

解决筛选WorkOrder/EngOrder/PartNo相同但InstPosition不同行的问题

原始数据表格

AircraftWorkOrderEngOrderDescriptionPartNoInstPosition
KHB2145engine 1pw123E1
KHB2145engine 4pw123E2
KHB2245engine 2pw122E1
KBG3155rotor enginev123E2
KBG3651engine 9v156E1
KBG3155engine compv123E1

预期结果

AircraftWorkOrderEngOrderDescriptionPartNoInstPosition
KHB2145engine 1pw123E1
KHB2145engine 4pw123E2
KBG3155rotor enginev123E2
KBG3155engine compv123E1

你的SQL问题所在

你写的自连接语句存在语法错误:INNER JOIN b 未指定b表的来源,需写成 INNER JOIN 你的表名 b;即便修正语法,原语句还会返回重复行(同一行会被双向匹配),导致结果不符合预期。

正确的解决方案

方案1:修正自连接并去重

SELECT DISTINCT a.* 
FROM 你的表名 a
INNER JOIN 你的表名 b 
  ON a.WorkOrder = b.WorkOrder 
  AND a.EngOrder = b.EngOrder 
  AND a.PartNo = b.PartNo
  AND a.InstPosition != b.InstPosition
  • 用DISTINCT避免重复返回同一行
  • 将你的表名替换为实际表名

方案2:分组筛选目标组合后关联查询

先筛选出存在多个不同InstPosition的WorkOrder/EngOrder/PartNo组合,再关联原始表获取完整数据,逻辑更清晰且性能更优:

SELECT t.*
FROM 你的表名 t
INNER JOIN (
  SELECT WorkOrder, EngOrder, PartNo
  FROM 你的表名
  GROUP BY WorkOrder, EngOrder, PartNo
  HAVING COUNT(DISTINCT InstPosition) > 1
) g ON t.WorkOrder = g.WorkOrder 
   AND t.EngOrder = g.EngOrder 
   AND t.PartNo = g.PartNo

内容的提问来源于stack exchange,提问作者Саят Оразов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:10:25