我正在使用Netezza SQL.

假设我有两张表:

### TABLE1

  var1 var2
1    1    a
2    1    b
3    1    c

## TABLE2

  var1 var2
1    1    a
2    1    b
3    1    c

如果我使用的是R编程语言,我可以很容易地验证这两个表是相同的:

> identical(table1, table2)
[1] TRUE

My Question:在Netezza SQL中有可能做类似的事情吗?

谢谢!

推荐答案

Set operators可以用来找出两个表之间的差异.

EXCEPT ALL从第一个结果集中的第二个结果集中删除相同的行,这必须以两种顺序运行才能获得所有差异.UNION ALL将两个结果集合并在一起.如果返回任何行,则它们是不同的.COUNT(*) = 0将把它作为布尔值返回.

-- Example data and table names with a CTE, this isn't required.
WITH TABLE1 (var1, var2) AS (
    VALUES (1, 'a'), (1,'b'), (1,'c')
),
TABLE2 (var1, var2) AS (
    VALUES (1, 'a'), (1,'b'), (1,'c')
)

-- Compare these tables
SELECT COUNT(*) = 0 AS IS_IDENTICAL FROM
(
    (
        SELECT * FROM TABLE1
        EXCEPT ALL
        SELECT * FROM TABLE2 
    )
    UNION ALL
    (
        SELECT * FROM TABLE2
        EXCEPT ALL
        SELECT * FROM TABLE1 
    )
)
;

输出:

IS_IDENTICAL
true

Sql相关问答推荐

当有空单元格时,如何连接列

SQL Oracle条件分组依据

如何在Presto中将多个列合并到一个数组中

如果元素包含通过SQL指定的字符串,则过滤掉数组元素

SQL Select 最小优先级

SQL:如何查找聚合满足条件的连续日期

每年独特口味的冰淇淋数量

按分类标准检索记录

每个学校 Select N个最新的行,但跳过同一学生的重复行

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

替换SQL Server XML中多处出现的 node 值

如何在Hive SQL中分别按多列进行分组?

通过ID和数据找到每个不同的值

SQL 中的第一个值和倒数第二个值

使用长 IN 子句的 SQL 优化

在自引用表中使用分组和计数的SQL查询语句

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

从 varchar 列中删除特殊字符后的前面的零和字符时遇到问题

字符串从更改到表列和查询中的一行的转换错误

删除具有相同 ID 的重复记录 - Postgresql