当前位置: 首页 > 知识库问答 >
问题:

SQL:如何检查一个表的行是否不存在于另一个表中?[重复]

池恩
2023-03-14

目前,我在postgres中有一些重复的表A和表B,我只想选择表A中存在但表B中不存在的行,这是左连接的一种形式吗?

实现这一目标的最佳方式是什么?

共有2个答案

徐皓君
2023-03-14

您可以执行左外部联接,并检查联接键为NULL的项目。

例如:

TABLE A:
id, name
1,  red
1,  red
2,  blue

TABLE B:
1,  big
3,  small

使用以下查询:

SELECT * FROM table_a AS a LEFT OUTER JOIN table_b AS b ON a.id=b.id WHERE b.id IS NULL;

您只会得到表a上的“2,蓝色”,但表b上没有

这是一把小提琴:https://www.db-fiddle.com/f/fMiNwVpgHeCYN6ZyD8ENmD/1

闾丘鸣
2023-03-14

我想这两个表的ID都是pk列

2/选择a.id从左向外连接ba.id=b.idb.id为空

3/从a中选择id减去从b中选择id

 类似资料:
  • 问题内容: 在我的PostgreSQL 9.4 数据库中,我有一个表,该表的列具有唯一值。 我正在创建具有相似结构(此处不重要)和一列的新表。我需要一种方法来限制要插入的值,使其不存在于中。 例如,如果包含值 ‘color’ 和 ‘length’ ,则需要防止包含 ‘color’ 或 ‘length’ 值。因此,换句话说,我需要提供两个表中的列之间没有任何重复的值。约束应该是双向的。 问题答案:

  • 问题内容: 我的表设置如下: 我想构造一个select语句,该语句将显示在value_search中没有条目的所有进程名称(带有其各自的id_string)。 进程表中的id_string可以为 null ,并且仍然具有名称,但是如果可能的话,必须将其排除。value_search中的id_string永远不能为 null 我该怎么做呢? 问题答案: 通常,如果您想要其他表中不存在的行,则将LEF

  • 问题内容: 我有两个arraylist 我想检查a2中是否存在a1的所有元素。这是我正在尝试的问题 这没有给出一致的结果…还有其他方法可以做到吗? 问题答案: 不知道我是否正确理解了您的问题,为什么使用? 试过这个: 它输出 添加一个额外的元素将使它失败(如预期): 它输出

  • 我需要检查一个arraylist中的任何值是否存在于另一个arraylist中: 它打印“它不包含”。我需要知道是否有方法比较这两个arraylist,如果其他arraylist中存在任何值,它应该返回。我知道迭代可以有所帮助。有什么简单的方法可以做到这一点吗?

  • 问题内容: 我有以下两个SQL表(在MySQL中): 如何找出哪些电话是由人,他们提出是不是在?所需的输出将是: 任何帮助将非常感激。 问题答案: 有几种不同的方法可以执行此操作,效率各不相同,具体取决于查询优化器的性能以及两个表的相对大小: 这是最简短的陈述,如果您的电话簿很短,则可能是最快的陈述: 或者(由于Alterlife) 或(感谢WOPR) (如其他人所说,忽略它通常最好只选择想要的列

  • 问题内容: 我有两个清单说 现在,我想找出List2中是否存在List1的所有元素。在这种情况下,就全部存在。我不能使用子集函数,因为我可以在列表中重复元素。我可以使用for循环来计算List1中每个项目的出现次数,并查看它是否小于或等于List2中的出现次数。有一个更好的方法吗? 谢谢。 问题答案: 当出现次数无关紧要时,您仍可以通过动态创建集合来使用子集功能: 如果需要检查每个元素在第二个列表