mysql - SQL 表更新每个 Id 的除最新记录之外的所有记录

标签 mysql sql

考虑下表,其中有 4 个不同的客户,每个客户的订单都超过 1 个。 我需要根据创建列的日期将每个客户的 XYZ 列更新为 1。

Update the table1 set xyz = 1

仅条件是最新(创建日期)订单的 XYZ 值为 0

Customerid  Orderid     Date Created       XYZ 
12193438    13393354    09/08/2011 16:35    0
12193438    13384318    05/08/2011 14:08    0
12193438    13384458    08/08/2011 14:01    0
21801966    13379456    06/08/2011 12:59    0
21801966    13380639    06/08/2011 16:42    0
21971567    13385322    22/08/2011 18:00    0
21971567    13380200    09/08/2011 21:03    0
66697824    13389263    07/08/2011 13:44    0
66697824    13380162    08/08/2011 15:48    0

它应该如下所示

Customerid  Orderid       Date Created     XYZ
12193438    13393354    09/08/2011 16:35    0
12193438    13384318    05/08/2011 14:08    1
12193438    13384458    08/08/2011 14:01    1
21801966    13379456    06/08/2011 12:59    1
21801966    13380639    06/08/2011 16:42    0
21971567    13385322    22/08/2011 18:00    0
21971567    13380200    09/08/2011 21:03    1
66697824    13389263    07/08/2011 13:44    1
66697824    13380162    08/08/2011 15:48    0

最佳答案

UPDATE thetable tt
SET xyz = 1
WHERE EXISTS (
  SELECT * FROM thetable ex
  WHERE ex.customerId = tt.customerId
  AND ex.dateCreated > tt.dateCreated
  );

关于mysql - SQL 表更新每个 Id 的除最新记录之外的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23310162/

相关文章:

php显示来自sql的日期

mysql - 通过 PhpMyAdmin 执行简单的 SQL 查询时遇到的问题

MySQL:如何将一个数据库变为只读?

java - 初始 SessionFactory 创建失败 : org. hibernate.MappingException:无效配置

MySQL - 我如何输入 NULL?

sql - 一个或另一列中的值

sql - 合并来自不同数据库的sqlite中的两个表

mysql根据某列统计匹配次数

php - 按字母顺序获取第一个和最后一个单词

sql - 用介于 2 个日期参数之间(包括 2 个日期参数)的日期填充临时表的最简单方法