我想根据一个参数从不同的表中进行选择,这可能吗?这两个表都具有兼容的结构。
{1}, {1, 2, 5}, {3, 4}
答案 0 :(得分:1)
尽管这根本不是最佳实践,并且您应该真正查看数据模型,但这是一种实现方法:
with table_a as (
select 1::int, 'a'::text param
), table_b as (
select 2::int, 'b'::text param
)
select *
from (
select *
from table_a
union all
select *
from table_b
) rs
where param = 'a'
只需在所有表中添加一个参数列,将它们合并,然后将它们全部放在一个子查询中,就可以从中选择特定表的参数。
答案 1 :(得分:0)
Georgi的答案可以最好地解决我提出的问题,因此对于将来的读者来说,这可能是正确的答案。
但是对于我所处的情况,我采取了另一种方法,我将该表交换功能封装到一个如下所示的过程中:
create function table_swap(p_target character varying)
returns TABLE(id int)
language plpgsql
as $$
begin
case
when p_target = 'a' then
return query
select * from table_a;
when p_target = 'b' then
return query
select * from table_b;
else
return;
end case;
然后允许我执行以下操作
select * from table_swap(p_target);