用于计算两列逻辑AND的表差异的SQL命令



我有表1

+------+----------------+
| ppl  | action         |
+------+----------------+
| p2   | Run            |
| p1   | Jump           |
| p3   | Walk           |
+------+----------------+

和表2

+------+----------------+
| ppl  | action         |
+------+----------------+
| p1   | Eat            |
| p2   | Look           |
| p3   | Walk           |
+------+----------------+

首先我想要两张桌子:差一点。差异表将是表2中的任何应用程序和操作对,但不在表1中。

+------+----------------+
| ppl  | action         |
+------+----------------+
| p1   | Eat            |
| p2   | Look           |
+------+----------------+

在那里要实现的sql命令是什么?有些人向我介绍了上一篇文章:仅当值不为';不存在

不幸的是,这篇文章只讨论了基于一列的过滤。我很难将它概括为两列,因为where子句不同时包含两列。因此,请与我一起展示并引导我完成两列逻辑and解决方案的筛选。

谢谢!

您可以在这里使用存在逻辑:

SELECT t2.ppl, t2.action
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1
WHERE t1.ppl = t2.ppl AND t1.action = t2.action);

左反加入是另一种选择:

SELECT t2.ppl, t2.action
FROM table2 t2
LEFT JOIN table1 t1
ON t1.ppl = t2.ppl AND t1.action = t2.action
WHERE t1.ppl IS NULL;

相关内容

最新更新