我想比较下表中的两个值。
Arlarp
+------+--------+
|ARLID | ARPID |
+------+--------+
| AA | AIA |
| OA | AIA |
| AA | ATL |
| AA | DFW |
| AA | LAX |
| DL | ORD |
| EK | ORD |
| AC | YYZ |
+------+--------+
航班
+------+---------+----------+
| ARLID| ARPID_1 | ARPID_2 |
+------+---------+----------+
| AA | ATL | DFW |
| AA | DFW | ATL |
| UA | ORD | DFW |
+------+---------+----------+
从Arlarp,我们有现成的值对。在比较航班的ARLID与ARPID_1和ARPID_2时,我想查找Flight中不存在的Arlarp缺失值对。
这就是结果:
+------+---------+
| ARLID| ARPID |
+------+---------+
| UA | ORD |
+------+---------+
| UA | DFA |
+------+---------+
一种选择是用flight
取消透视union all
表,然后用alarp
拔出not exists
中不存在的行:
select f.*
from (
select arlid, arpid_1 arpid from flight
union all select arlid, arpid_2 from flight
) f
where not exists (select 1 from alarp a where a.arlid = f.arlid and a.arpid = f.arpd)