我有三个表,A,B和C。它们都保存不同的数据,但有一些共同的列。
如果A、B和C都有列C1和C2那么我如何使用可能在 3 个表中的任何一个中的C1值来查找特定的C2值?
基本上,我想做一个简单的查找,但让它作用于 3 个表的联合 - 我宁愿不使用视图来实现这一点。
请注意,这是一个Ingres Vectorwise数据库。
我有三个表,A,B和C。它们都保存不同的数据,但有一些共同的列。
如果A、B和C都有列C1和C2那么我如何使用可能在 3 个表中的任何一个中的C1值来查找特定的C2值?
基本上,我想做一个简单的查找,但让它作用于 3 个表的联合 - 我宁愿不使用视图来实现这一点。
请注意,这是一个Ingres Vectorwise数据库。
您可以通过合并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
出于性能原因使用过。如果您担心重复值,union
请distinct
在select
.
这是标准 SQL,应该适用于任何数据库。
我不知道您所说的“使用 C1 值的特定 C2 值”是什么意思,但是,无论您对视图的查询是什么,重复该查询并合并结果,
SELECT *
FROM A
WHERE C2 = ?
UNION ALL
SELECT *
FROM B
WHERE C2 = ?
UNION ALL
SELECT *
FROM C
WHERE C2 = ?
(视图是一个标准的 SQL 功能,可以让您编写的任何查询更容易。)