我有两个表,TS_SALES
和TS_SALES_AUDIT
。
此处TS_SALES
是父表,TS_SALES_AUDIT
是子表。
当我使用下面的代码计算两个表中的列时,
1) SELECT count(*) FROM user_tab_columns WHERE table_name = 'TS_SALES';
---------
Count(*)
---------
130
2) SELECT count(*) FROM user_tab_columns WHERE table_name = 'TS_SALES_AUDIT';
---------
Count(*)
---------
40
我们可以返回两个表中不相等的列名吗?
答案 0 :(得分:3)
这应该可以解决问题:
TS_SALES
但不在TS_SALES_AUDIT
SELECT column_name FROM user_tab_columns WHERE table_name = 'TS_SALES'
minus
SELECT column_name FROM user_tab_columns WHERE table_name = 'TS_SALES_AUDIT'
TS_SALES_AUDIT
但不在TS_SALES
SELECT column_name FROM user_tab_columns WHERE table_name = 'TS_SALES_AUDIT'
minus
SELECT column_name FROM user_tab_columns WHERE table_name = 'TS_SALES'
答案 1 :(得分:1)
一种方法使用聚合:
select max(table_name) as which_table_name,
max(column_name) as which_column_name
from user_tab_columns
where table_name in ('TS_SALES', 'TS_SALES_AUDIT')
group by column_name
having count(*) = 1;
答案 2 :(得分:0)
要获取TS_SALES中存在的列而不是TS_SALES_AUDIT中的列,可以使用以下查询:
A.Col2 as MyCol2Property
要实现相反的目的,请使用以下内容:
SELECT COLUMN_NAME FROM user_tab_columns
WHERE table_name = 'TS_SALES'
AND COLUMN_NAME NOT IN
(
SELECT COLUMN_NAME FROM user_tab_columns WHERE table_name = 'TS_SALES_AUDIT'
)