元の投稿からのクエリがうまくいくはずですが、おそらく一重引用符がどこかにありませんか?あなたはまた、両方のテーブルから、すべての列が一致していない見て少し複雑なクエリを書くことができます。この例
create or replace table xxx1(i int, j int);
create or replace table xxx2(i int, k int);
-- Query from the original post
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'XXX1'
AND column_name NOT IN
(
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'XXX2'
);
-------------+
COLUMN_NAME |
-------------+
J |
-------------+
を参照してください:あなたはもちろんの唯一欠けている列を見つけるために、WHERE s1.column_name IS NULL or s2.column_name IS NULL
を追加することができます
with
s1 as (
select table_name, column_name
from information_schema.columns
where table_name = 'XXX1'),
s2 as (
select table_name, column_name
from information_schema.columns
where table_name = 'XXX2')
select * from s1 full outer join s2 on s1.column_name = s2.column_name;
------------+-------------+------------+-------------+
TABLE_NAME | COLUMN_NAME | TABLE_NAME | COLUMN_NAME |
------------+-------------+------------+-------------+
XXX1 | I | XXX2 | I |
XXX1 | J | [NULL] | [NULL] |
[NULL] | [NULL] | XXX2 | K |
------------+-------------+------------+-------------+
。
また、列のタイプの違いを検出するために簡単に拡張することもできます。