Если я использую UNION для выбора столбцов из 5 таблиц, затем выберите конкретное значение из результатов, как я могу определить, из какой таблицы это значение?Как вернуть имя исходной таблицы при использовании UNION?
ответ
питание имена таблицы в столбце вдоль других столбцов вы тянущие:
SELECT
'table1' AS tablename,
other columns
FROM table1
UNION ALL
SELECT
'table2' AS tablename,
other columns
FROM table2
UNION ALL
…
Я знаю, как объединиться, я хочу знать, как у меня есть какое-то значение в определенном столбце любой из 4-х таблиц, и он показывает результат. Я хочу вернуть имя таблицы, где находится этот элемент. –
@Arshpreet: Не уверен, что я понимаю, что вы просите Теперь. Я хотел показать, как указать имена таблиц, а не как объединить множественные выборки (я догадался, что вы это уже знаете). В приведенном выше примере вы можете увидеть, что в дополнение к другим получаемым столбцам набор результатов также будет иметь столбец с именем 'tablename'. Таким образом, каждая строка на выходе будет содержать имя таблицы, из которой она была получена. –
Добавить столбец в список результатов, в котором указывается, из какой таблицы поступают данные. например .:
select 'table1' tableName,
columnA,
columnB
from table1
union
select 'table2' tableName,
columnC,
columnD
SELECT columnA, columnB, 'Table 1' FROM table1
UNION ALL
SELECT columnA, columnB, 'Table 2' FROM table2
Это добавит столбец, который показывает, какую таблицу приходит данные. Работает в Oracle по крайней мере ...
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' будет содержит имена источников.
Надеюсь, что это сработает
Не могли бы вы объяснить или пояснить пример, о чем вы спрашиваете? – sarwar026