根据过滤条件查询不同的表

时间:2016-08-22 08:29:28

标签: sql

我想创建一个查询,根据应用的Where过滤器访问不同的表。

例如,如果像这样查询预定义查询:

Select A,B,C,D from the_query
Where A>0 and A<5
[Gets data from source table A0to5_Table)

Select A,B,C,D from the_query
Where A>=5 and A<10
[Gets data from source table A5to10_Table)

所有源表都具有相同的架构。我想要的是查询中的CASE类型语句,案例是基于Where过滤器。

是否可以使用SQL(PostgreSQL或SQL Server)执行此操作?或者是使用带参数的存储过程的唯一选项吗?

1 个答案:

答案 0 :(得分:1)

您无法在SQL中执行此操作。一个主要原因是将相同数据存储在不同的表中并不是存储数据的SQLish方式。您应该将这些数据存储在一个表中,可能还有一列用于指定其他信息。

您可以做的一件事就是将union all表格放在一起。像这样:

select t.*
from ((select t.* from A0to5_Table) union all
      (select t.* from A5to10_Table)
     ) t
where a > 0 and a < 5;

您甚至可以为此目的使用视图。

许多数据库使用列作为键来支持表的分区。这为您提供了所需的功能,并将所有数据放在一个表中。您需要查阅特定数据库的文档,以了解它在您的情况下是如何适用的。