0

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

例如:我有表(tag_id、值、时间、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表的别名。我怎样才能进行这样的更新?提前致谢。

4

1 回答 1

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
     )
)

但正如文档所述:

要求目标表有一个主键并且目标列覆盖主键

希望有帮助

于 2015-05-15T11:20:13.863 回答