我有表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;