有没有办法在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
表的别名。我该怎么做这样的更新?提前谢谢。
答案 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
)
)
但正如文档所述:
要求目标表具有主键,并且目标列要覆盖主键
希望有所帮助
扬