如何根据同一个表的先前搜索结果更新SQL列

时间:2016-04-27 13:30:34

标签: mysql sql database

假设我有一个包含列的表:

  1. ID
  2. 注释
  3. 日期
  4. Previous_Comment
  5. Previous_Date
  6. 每天都会批量添加新记录。我应该写一个更新命令,它将在批量插入后运行。

    用户可以输入 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。

    我知道这是错的。请帮忙:(

1 个答案:

答案 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;

喜欢这个吗?