2

我有三个表,ABC。它们都保存不同的数据,但有一些共同的列。

如果ABC都有列C1C2那么我如何使用可能在 3 个表中的任何一个中的C1值来查找特定的C2值?

基本上,我想做一个简单的查找,但让它作用于 3 个表的联合 - 我宁愿不使用视图来实现这一点。

请注意,这是一个Ingres Vectorwise数据库。

4

2 回答 2

8

您可以通过合并from子句中的表来做到这一点:

select c2
from ((select c1, c2 from a) union all
      (select c1, c2 from b) union all
      (select c1, c2 from c)
     ) t
where c1 = <your value>

union all出于性能原因使用过。如果您担心重复值,uniondistinctselect.

这是标准 SQL,应该适用于任何数据库。

于 2012-10-25T18:48:51.493 回答
1

我不知道您所说的“使用 C1 值的特定 C2 值”是什么意思,但是,无论您对视图的查询是什么,重复该查询并合并结果,

SELECT *
FROM A
WHERE C2 = ?
UNION ALL
SELECT *
FROM B
WHERE C2 = ?
UNION ALL
SELECT *
FROM C
WHERE C2 = ?

(视图是一个标准的 SQL 功能,可以让您编写的任何查询更容易。)

于 2012-10-25T18:48:59.187 回答