2016-05-26 45 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' ....) 

或使用不逆