如何在MySQL上比较一个表中的两对与另一个表中的两对

问题描述 投票:1回答:1

我想比较下表中的两个值。

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    |
+------+---------+
mysql sql join select unpivot
1个回答
0
投票

一种选择是用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)
© www.soinside.com 2019 - 2024. All rights reserved.