2012-04-07 1 views
1

Если я использую UNION для выбора столбцов из 5 таблиц, затем выберите конкретное значение из результатов, как я могу определить, из какой таблицы это значение?Как вернуть имя исходной таблицы при использовании UNION?

+0

Не могли бы вы объяснить или пояснить пример, о чем вы спрашиваете? – sarwar026

ответ

8

питание имена таблицы в столбце вдоль других столбцов вы тянущие:

SELECT 
    'table1' AS tablename, 
    other columns 
FROM table1 

UNION ALL 

SELECT 
    'table2' AS tablename, 
    other columns 
FROM table2 

UNION ALL 

… 
+0

Я знаю, как объединиться, я хочу знать, как у меня есть какое-то значение в определенном столбце любой из 4-х таблиц, и он показывает результат. Я хочу вернуть имя таблицы, где находится этот элемент. –

+1

@Arshpreet: Не уверен, что я понимаю, что вы просите Теперь. Я хотел показать, как указать имена таблиц, а не как объединить множественные выборки (я догадался, что вы это уже знаете). В приведенном выше примере вы можете увидеть, что в дополнение к другим получаемым столбцам набор результатов также будет иметь столбец с именем 'tablename'. Таким образом, каждая строка на выходе будет содержать имя таблицы, из которой она была получена. –

5

Добавить столбец в список результатов, в котором указывается, из какой таблицы поступают данные. например .:

select 'table1' tableName, 
     columnA, 
     columnB 
from table1 
union 
select 'table2' tableName, 
     columnC, 
     columnD 
0
SELECT columnA, columnB, 'Table 1' FROM table1 
UNION ALL 
SELECT columnA, columnB, 'Table 2' FROM table2 

Это добавит столбец, который показывает, какую таблицу приходит данные. Работает в Oracle по крайней мере ...

0
select col 1, col 2, 'users' as table_name from users 
union all 
select col 1, col 2, 'vendors' as table_name from vendors; 

'table_name' будет содержит имена источников.

Надеюсь, что это сработает