【问题标题】:SQL Update row with min Date of ID具有最小 ID 日期的 SQL 更新行
【发布时间】:2015-08-26 21:19:31
【问题描述】:

我有一个 id,date,x 的表格

id         date         x
1  2015-06-09 12:20:45  1
1  2015-06-10 10:21:55  1
2  2015-06-08 12:34:12  1
2  2015-06-11 13:11:13  1
3  2015-06-07 14:50:44  1
3  2015-06-01 11:12:14  1

现在我想增加 x 每个 id 的最早日期的行。所以我希望这个出来:

id         date         x
1  2015-06-09 12:20:45  2
1  2015-06-10 10:21:55  1
2  2015-06-08 12:34:12  2
2  2015-06-11 13:11:13  1
3  2015-06-07 14:50:44  1
3  2015-06-01 11:12:14  2

我就是这样尝试的:

更新表 设置 x=x+1 其中日期= (选择分钟(日期) 从表 哪里 id=??)

??是我不知道该怎么做的地方。此外,我收到一个错误,因为我“无法在 FROM 子句中指定要更新的目标表”。也许这是一个完全错误的方式,我希望有人能帮助我

【问题讨论】:

    标签: mysql min


    【解决方案1】:

    您可以使用 JOIN 并更新为

    update table_name t1
    join(
      select id,min(date) as date from table_name
      group by id
    )t2 on t1.id = t2.id and t1.date = t2.date
    set t1.x = t1.x+1 ;
    

    http://www.sqlfiddle.com/#!9/fec17/1

    【讨论】:

      【解决方案2】:

      试试这个:

      UPDATE Table
      SET x=x+1
      where date in
      (SELECT MIN(date)
      FROM Table
      group by id)
      

      【讨论】:

        【解决方案3】:

        按 ID 分组获取最短日期..

        UPDATE Table
        SET x=x+1
        where date =
        (SELECT top 1 MIN(date)
        FROM Table
        group by id)
        

        【讨论】:

          猜你喜欢
          • 2016-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-16
          • 2022-01-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多