我有这样的一个表:多次插入WITH/CTE
CREATE TABLE mytable
(
col1 character varying(50),
mydate timestamp without time zone
);
我希望将数据插入到这个表,也是我想最大的ID从我的源存储:
insert into mytable (select myid, col1, mydate from sourcetable);
我在mytable中没有myid列,后来我不能再问这样的问题:select max(myid) from sourcetable
,因为我得到一个快照,而sourcetable是一个事务表(每秒有数百个新记录),所以我需要从该快照中获取最大ID
我想是这样的:
with query1 as (select myid, col1, mydate from sourcetable),
query2 as (select max(myid) id from query1)
insert into mytable (select co1, mydate from query1);
update anothertable set value=(select myid from query2) where col2='avalue';
但我得到这个错误:
ERROR: relation "query2" does not exist
LINE 1: update anothertable set value=(select myid from query2) wher...
有没有办法解决这个问题的方法吗?
更改秒*带*为逗号:'与QUERY2如...' - >>',QUERY2如...' – joop
@joop查询是没有“与QUERY2作为“首先。我的错。我将编辑问题 –
'... 1,从query1开始计算);'在''后面''两个CTE已经超出了范围。 (他们只在当前声明中有效) – joop