查找一个表中的列,但不在另一表中

问题描述 投票:0回答:2

我正在使用Snowflake中的两个非常宽的表(表A,表B)。两个表应具有完全相同的列,尽管不必以相同的顺序。但是,表B缺少几列。有没有一种方法可以快速找到表A中的所有列而不是表B中的所有列?我不关心数据,只是列的存在。

本质上,我正在寻找一种SQL方法来查找表B中缺少的表中的所有列。

我目前正在使用ETL工具。但这很麻烦。如果可以使用SQL完成,那就太好了。

sql snowflake-cloud-data-platform information-schema
2个回答
0
投票

尝试以下操作

SELECT column_name
FROM information_schema.columns 
WHERE table_name = 'tableA'
    AND column_name NOT IN
    (
        SELECT column_name
        FROM information_schema.columns 
        WHERE table_name = 'tableB'
    );

0
投票

您可以通过聚合来做到这一点:

SELECT column_name
FROM information_schema.columns 
WHERE table_name IN ('tableA', 'tableB')
GROUP BY column_name
HAVING MIN(table_name) = MAX(table_name) AND MIN(table_name) = 'TableA';

这是一个方便的结构,可以更轻松地将其推广到多个表。它确实假定两个表位于同一服务器上。

© www.soinside.com 2019 - 2024. All rights reserved.