基于组合键比较表的记录

时间:2015-03-04 15:36:51

标签: sql oracle postgresql postgresql-9.2

我有一份工作来刷新我需要帮助的查找表数据。我有2个数据表,一个是现有版本(table1),另一个是新版本(table2)。每个表的主键是复合键。我知道每个行中有不同的行数,我需要找出差异。假设复合主键的2列部分命名为column1和column2。

通常,在“普通”主键设置中,我只查找其他表中主键列表中的主键值。但我不知道如何使用复合主键执行此操作。

我为SQL Server找到了一个类似的线程,但在我的情况下这似乎不起作用,不确定我是否做错了。

How can I compare rows from 2 tables that have composite primary keys?

有人可以帮我比较Oracle / PostgreSQL中这两个表的行吗?

2 个答案:

答案 0 :(得分:2)

SELECT ...
FROM a
WHERE NOT EXISTS (
  SELECT *
  FROM b
  WHERE b.x = a.x AND b.y = a.y
  );
BTW:这个帽子与主键无关;它也适用于非键列。

答案 1 :(得分:0)

您甚至可以将NOT IN与复合值一起使用。例如:

但其他语法变体通常更简单/更快/更可靠:

@wildplasser这样的NOT EXISTS张贴是最佳表现的良好候选人。