запросить несколько таблиц и объединить результаты в одну таблицу возврата для хранимой процедуры? - PullRequest
0 голосов
/ 15 июня 2010

У меня есть несколько разных таблиц, но все они имеют 2 столбца с одинаковым именем. Я хочу написать хранимую процедуру, которая ищет один столбец во всех таблицах и возвращает результат. Идеи? Я довольно туп, когда дело доходит до SQL.

Ответы [ 3 ]

7 голосов
/ 15 июня 2010

Операция, которую вы ищете: UNION или UNION ALL.

SELECT * FROM (
 SELECT col1, col2 FROM table1
 UNION ALL
 SELECT col1, col2 FROM table2
 UNION ALL
 SELECT col1, col2 FROM table3
) all_tables
WHERE all_tables.col1 = 'something'

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

1 голос
/ 15 июня 2010

Вам даже не понадобится хранимая процедура ... просто используйте запрос объединения.

select field1, field2 from table1 where table1.field1=criteria
union
select field1, field2 from table2 where table2.field1=criteria
union
select field1, field2 from table3 where table3.field1=criteria
etc...
1 голос
/ 15 июня 2010
Select myColumn FROM Table1
UNION Select myColumn FROM Table2
UNION Select myColumn FROM Table3 

.. и т.д.

- Обратите внимание, что все имена столбцов должны быть одинаковыми и должны быть в каждой таблице, чтобы это работало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...