2016-05-26 47 views
1

我知道我能做到这一点从一些表中获取的列名:获取列名在子查询

SELECT 
COLUMN_NAME 
FROM ALL_TAB_COLS 
WHERE TABLE_NAME = 'MY_TABLE' 

但是如果我想要做这样的事情(的伪代码位):

WITH 
    SUB1 AS (SELECT COLUMN_1, COLUMN_2 FROM SOME_TABLE1) 
    SUB2 AS (SELECT COLUMN_1, COLUMN_2 FROM SOME_TABLE2) 
    RESULTS AS 
    (SELECT COLUMN_NAME 
    FROM SUB1 
    INNER JOIN SUB2 ON SUB1.COLUMN_NAME = SUB2.COLUMN_NAME) 

SELECT * FROM RESULTS 

是这样的可能吗?

+0

让我们说我需要一个简单的方法来比较具有相同列名的表。 – Petar

+0

你可以用普通查询来做到这一点。只是别名。 table1.col_a as A,table2.col_a as A_1 – PyNoob

+0

对不起,我知道你的意思,我只是没有正确表达自己。我需要比较一个表的列名和列名的外部列表,我没有一个表,我不能有一个表。 – Petar

回答

1

您可以查询information_schema.COLUMNS获取列名并在表中进行比较。

Select distinct column_name, table_name 
from information_schema.COLUMNS 
where table_name in('table1','table2') 
and column_name = 'column_name' 
1

如果你有列名的外部列表与表的列名比较

我建议我在哪里条款

SELECT 
COLUMN_NAME 
FROM ALL_TAB_COLS 
WHERE TABLE_NAME = 'MY_TABLE' 
AND COLUMN_NAME in ('colname1,' 'colname2' ....) 

或使用不逆