4

我将如何比较两个表 (Table1Table2) 并在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

我尝试了一些没有运气的陈述。

4

2 回答 2

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)

于 2013-10-30T02:14:11.363 回答
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)

于 2013-10-25T15:34:10.870 回答