我有很多数据被分成两个或多个表。然后如何从所有表中获取数据。
第一个表是点表,它分为三个部分
first table = ab_p1_point
second table = ab_p2_point
third table = ab_p3_point
另一个表是行表,它又分为三个部分
first table = bc_p1_line
second table = bc_p2_line
third table = bc_p3_line
如何将点表的所有部分组合成单点表,将线表的所有部分组合成单行表,而不是在两个表之间执行操作。
答案 0 :(得分:0)
假设所有三个表都具有相同的结构,您可以使用union all
:
select * from (
select f1, f2, f3 from ab_p1_point
union all
select f1, f2, f3 from ab_p2_point
union all
select f1, f2, f3 from ab_p3_point
) t
where f1 = 'abc'
通过将查询放入视图,您可以更轻松地使用它。
但是为什么要在多个表中划分你的行?
答案 1 :(得分:0)
您可以使用CTE(WITH
声明):
WITH points AS (
SELECT * FROM ab_p1_point
UNION
SELECT * FROM ab_p2_point
UNION
SELECT * FROM ab_p3_point
)
, lines AS (
SELECT * FROM bc_p1_line
UNION
SELECT * FROM bc_p2_line
UNION
SELECT * FROM bc_p3_line
)
SELECT *
FROM points
INNER JOIN lines
ON points.column = lines.column