如何比较两个表格(Table1
和Table2
)并查找Table2
中的所有新条目或更改。
使用SQL Server我可以使用
Select * from Table1
Except
Select * from Table2
这是我想要的样本
表1
A | 1
B | 2
C | 3
表2
A | 1
B | 2
C | 2
D | 4
所以,如果我比较两个表,我希望我的结果能够显示以下内容
C | 2
D | 4
我尝试了一些没有运气的陈述。
答案 0 :(得分:6)
现在我有了你的实际样本数据集,我可以编写一个查询,查找一个表中不在另一个表中的每个域:
https://bigquery.cloud.google.com/table/inbound-acolyte-377:demo.1024有24,729,816行。 https://bigquery.cloud.google.com/table/inbound-acolyte-377:demo.1025有24,732,640行。
让我们看看1025中不是1024的所有内容:
SELECT a.domain
FROM [inbound-acolyte-377:demo.1025] a
LEFT OUTER JOIN EACH [inbound-acolyte-377:demo.1024] b
ON a.domain = b.domain
WHERE b.domain IS NULL
结果:39,629行。 (已过8.1秒,处理2.04 GB)
答案 1 :(得分:2)
获取差异(假设tkey是您唯一的行标识符):
SELECT a.tkey, a.name, b.name
FROM [your.tableold] a
JOIN EACH [your.tablenew] b
ON a.tkey = b.tkey
WHERE a.name != b.name
LIMIT 100
对于新行,有一种方法是您建议的:
SELECT col1, col2
FROM table2
WHERE col1 NOT IN
(SELECT col1 FROM Table1)
(当Table1变得过大时,你必须切换到JOIN EACH)