假设我有一个包含列的表:
每天都会批量添加新记录。我应该写一个更新命令,它将在批量插入后运行。
用户可以输入 ID 和评论,列日期, Previous_Comment 和 Previous_Date 自动填充。
日期充满了今天的日期。
Previous_Comment 的最后一条评论应具有相同的 ID ,但最新日期。因此,如果 ID 为2,它会找到上一行 ID = 2 的评论和最近的日期,从该行获取评论并填充 previous_comment (类似于 previous_date 。)
问题在于,如果我们更新整个列,则会逐行执行每一行的查询。因此,对于每一行,我希望执行此操作。 PS。由于我只希望今天添加的行受到影响,因此我使用 getdate()为日期设置日期条件。
我觉得这是错的:
update table xyz
set previous_date=max(select date from xyz where ID=ID)
where date=getdate();
查询中的第一个ID(ID = ID)用于查询,第二个ID表示正在执行它的当前行的ID。
我知道这是错的。请帮忙:(
答案 0 :(得分:0)
update table xyz x1
join (select ID,
max(date) as m_date
from xyz x2
where date<:date
group by ID) x2 on x1.ID=x2.ID
set previous_date=x2.m_date
where date=:date;
喜欢这个吗?