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

или использовать не для обратного

Смежные вопросы