查询多个表并将结果合并到一个存储过程的返回表中?

时间:2010-06-15 18:25:59

标签: sql stored-procedures select

我有几个不同的表,但它们都有2个同名的列。我想编写一个存储过程,搜索所有表中的一列并返回结果。想法?在谈到SQL时,我是个小伙伴。

3 个答案:

答案 0 :(得分:7)

您要查找的操作是UNIONUNION 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 :(得分:1)

Select myColumn FROM Table1
UNION Select myColumn FROM Table2
UNION Select myColumn FROM Table3 

...等

- 请注意所有列名必须相同,并且必须在每个表中才能使其生效

答案 2 :(得分:1)

您甚至不需要存储过程...只需使用联合查询。

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...