0

我正在尝试为 MySQL 构建一个 SQL 语句,它将更新组中的一行。获取下面的记录,我需要更新 IsPrimary 标志,以便将每个用户的最早记录设置为 1。

 ID       | UserID      | Inserted    | IsPrimary
----------|-------------|-------------|----------
000f83    | 79b8c3      | 2012-03-14  | 0
001401    | 79b8c3      | 2012-03-15  | 0
002e7d    | 4652a2      | 2012-02-22  | 0
003ca6    | 4652a2      | 2012-02-13  | 0  

所以上面的记录最终会是:

 ID       | UserID      | Inserted    | IsPrimary
----------|-------------|-------------|----------
000f83    | 79b8c3      | 2012-03-14  | 1
001401    | 79b8c3      | 2012-03-15  | 0
002e7d    | 4652a2      | 2012-02-22  | 0
003ca6    | 4652a2      | 2012-02-13  | 1  
4

2 回答 2

4

试一试:

update t, (
  select t1.id anId from t t1
  left join t t2
  on t1.userId = t2.userId and t1.inserted > t2.inserted
  where t2.inserted is null
) s
set IsPrimary = 1
where t.id = anId

这是小提琴

于 2012-04-12T04:53:10.443 回答
0

尝试以下操作:

update t
set t.IsPrimary = 1
from myTable t
inner join myTable t2 on t.UserID = t2.UserID and t.Inserted<t2.Inserted
于 2012-04-12T04:50:51.953 回答