【发布时间】:2021-03-09 13:52:44
【问题描述】:
我在 nltl 表中有 3 条记录,它们都有不同的locked_dt => 锁定日期。现在我想更新其中的 is_locked 标志,以获取位于最后位置(最旧日期)的记录,即第三级。内部子查询工作正常,但子查询连同更新语句出现问题(SQL 命令未正确结束)
nltl 表:{ l_id、c_id、e_id、t_id、ee_id、locked_dt、is_locked }
update nltl set is_locked = 0
from (
select t_id, l_id, e_id, ee_id, c_id, is_locked from (
select ppl.*, DENSE_RANK() over (order by ppl.locked_dt desc) my_rnk
from nltl ppl
where ppl.l_d = 17 and ppl.t_id = 55 and ppl.c_id = 3 and ppl.e_id = 1509919001 and ppl.ee_id = 15099190
) t where my_rnk = 3
)
where t_id = t.t_id, l_id = t.l_id, e_id = t.e_id, ee_id = t.ee_id, c_id = t.c_id;
【问题讨论】:
-
在 from 之后起一个名字:
update nltl set is_locked=0 from (...) x并且不需要在子查询中选择is_locked -
你检查
UPDATE语句的语法了吗?FROM没有位置