暂时创建一行?

时间:2014-06-12 20:28:44

标签: sql postgresql

我正在寻找一些数据,但数据没有一行。我应该在没有在表中创建一行的情况下这样做,所以有没有办法只为我正在使用的查询而不是主表创建一行?我没有权限在表上创建行。

这是我想要使用的数据。我通过在一些现有数据上使用公式得到它。

Select <Columns>
From<Table>
left join (select sum(case when number = '440' then amount end) 
    /sum(case when number ='430' then amount end) GP from <table>)
on <relations>

我需要在其中一列中使用它。我想创建一个只在此查询中处于活动状态的小小行,并且不会出现在主数据库中。我没有权限编辑主数据库。我可以在此查询中创建它吗?

有可能吗? 如果不可能,请通过答案告诉我,这将结束问题。

2 个答案:

答案 0 :(得分:1)

您可以使用common table expression制作一个虚拟表格,其中包含您选择的其他行,用于select

例如,创建真实表:

create user foo login;
create table dont_touch ( x text);
insert into dont_touch values ('one fish'),('two fish'), ('red fish');
revoke all on dont_touch from foo;
grant select on dont_touch to foo ;

然后登录为&#34; foo&#34;并做:

with t as (select * from dont_touch union all select 'blue fish') 
select * from t;

但是,对此t的查询可能无法从基础实际表中存在的索引中受益,因此查询可能会慢得多。

答案 1 :(得分:1)

我不确定这是否是你想要的(我需要更多细节来理解这个问题),但你可以轻松地添加UNION ALL的行,例如:

SELECT numberOfThings,
       TypeOfThings 
FROM thingsTable tt 
UNION ALL 
SELECT 24, 'Fake Type of Things'

这样,这只会在您的查询中,而不在数据库中。 (您可以在子查询中使用它)

如果这有帮助您可以进一步阅读有关组合查询here

的信息