如何在Teiid的UPDATE中引用顶级表

时间:2015-03-05 08:27:11

标签: teiid

有没有办法在Teiid(8.4)的UPDATE语句中引用可更新表?

例如:我有表(tag_id,value,time,active_ind)。我想用非最长时间标记所有标签。

UPDATE BUFFER buf
SET active_ind = 'N';
WHERE "time" NOT IN (
    SELECT MAX("time")
    FROM BUFFER
    WHERE tag_id = buf.tag_id
);

但Teiid不支持可更新BUFFER表的别名。我该怎么做这样的更新?提前谢谢。

1 个答案:

答案 0 :(得分:2)

Teiid的MERGE INTO

怎么样?
MERGE INTO 
BUFFER(tag_id,value,time,active_ind) 
(SELECT buf.tag_id,buf.value,buf.time,'N' FROM 
     (
     BUFFER AS buf 
     INNER JOIN 
     (SELECT tag_id, MAX("time") AS max_time FROM BUFFER GROUP BY tag_id) AS m 
     ON buf.tag_id=m.tag_id AND buf.time<m.max_time
     )
)

但正如文档所述:

  

要求目标表具有主键,并且目标列要覆盖主键

希望有所帮助