我加入了一家新公司,他们正在使用DBVisualizer。在过去的5年里,我一直在使用SQL Server,现在我很欣赏SQL Server对查询的智能执行。
我面临的一个问题是一次执行多个临时表。例如,尝试执行以下操作时会出现一个错误,说#abc不可用。这在SQL Server中不是问题,因为它过去执行起来很聪明。
drop table if exists #abc;
create table #abc as
select a.ID, a.EMP
from sandbox.table1 as a
drop table if exists #cde;
create table #cde as
select a2.ID, sum(a1.sum) as Rev
from sandbox.table2 as a1
join #abc as a2 on a1.ID = a2.ID
group by a2.ID
如果您希望在运行时将某些查询用作表,请尝试WITH,它将帮助您在运行时为特定查询创建临时视图。然后您可以将此查询输出用作表并使用它。
示例-
with userTBL as (
select *
from user
where activated=true
),
usertiming as (
select date,userID
from timingtabls
where date=currentdate
)
select * from userTBL left join timing t on t.userID=id;