如何将一个表中的两对与 MySQL 上另一个表中的两对进行比较

Posted

技术标签:

【中文标题】如何将一个表中的两对与 MySQL 上另一个表中的两对进行比较【英文标题】:How to compare two pairs from one table to two pairs from another table on MySQL 【发布时间】:2020-08-04 19:19:12 【问题描述】:

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

阿拉普

+------+--------+
|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    |
+------+---------+

【问题讨论】:

从结果来看,我的意思是输入 DFW 而不是 DFA 【参考方案1】:

一种选择是使用union all 取消透视flight 表,然后使用not exists 拉出alarp 中不存在的行:

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)

【讨论】:

以上是关于如何将一个表中的两对与 MySQL 上另一个表中的两对进行比较的主要内容,如果未能解决你的问题,请参考以下文章

怎样一个表中的2个查询结果合并到一个表中的两列

Mysql比较两个表中的两列

MySQL 中的百分比 - 在同一个表中的两列之间

如何通过比较两个表中的两列来更新表中的列

如何为mysql中的每条记录检索表中的两条记录

两个表,一个表中的两列关联另一个表的id,如何将这个表中的两列显示为另一个表id对应的内容