【发布时间】:2010-06-15 18:25:58
【问题描述】:
我有几个不同的表,但它们都有 2 个同名的列。我想编写一个存储过程,在所有表中搜索一列并返回结果。想法?在 SQL 方面,我相当笨拙。
【问题讨论】:
标签: sql stored-procedures select
我有几个不同的表,但它们都有 2 个同名的列。我想编写一个存储过程,在所有表中搜索一列并返回结果。想法?在 SQL 方面,我相当笨拙。
【问题讨论】:
标签: sql stored-procedures select
您要查找的操作是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,因为它通常更快。
【讨论】:
Select myColumn FROM Table1
UNION Select myColumn FROM Table2
UNION Select myColumn FROM Table3
..等
-- 注意所有列名必须相同,并且必须在每个表中才能正常工作
【讨论】:
您甚至不需要存储过程...只需使用联合查询。
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...
【讨论】: