我有一个表格,我想添加一个列,在第一次出现数据集中记录的给定值时显示1。
所以,例如,如果我使用ID
字段作为查找唯一事件的位置,我想要一个“FirstOccur”列(如下所示)在第一次出现时放置1数据集中的唯一ID
值,只是忽略(保留为null)任何其他事件:
| ID | FirstOccur |
|------|--------------|
| 1 | 1 |
| 1 | |
| 1 | |
| 2 | 1 |
| 2 | |
| 3 | 1 |
| 4 | 1 |
| 4 | |
我有一个有效的两步法,首先应用一些排名sql,它会给我这样的东西:
| ID | FirstOccur |
|------|--------------|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
| 4 | 2 |
..我只是应用一些更新SQL来清空任何高于1的值,以获得所需的结果。
我只是想知道是否有一种(更简单的)一击法。
答案 0 :(得分:0)
假设您有创建日期或自动增加的ID或指定排序的内容,您可以执行以下操作:
update t
set firstoccur = 1
where creationdate = (select min(creationdate)
from t as t2
where t2.id = t.id
);