Sql 仅在多个重复记录中更新第一个和最后一个记录
我在Access中有一个名为Sql 仅在多个重复记录中更新第一个和最后一个记录,sql,ms-access,Sql,Ms Access,我在Access中有一个名为咒语的表,其中保存了患者咒语(患者在医院内有咒语)。其结构如下: | ID | SpellID | MultipleSpell | FirstSpell | LastSpell | |----|---------|---------------|------------|-----------| | 1 | 1 | False | | | | 2 | 2 | True
咒语的表,其中保存了患者咒语(患者在医院内有咒语)。其结构如下:
| ID | SpellID | MultipleSpell | FirstSpell | LastSpell |
|----|---------|---------------|------------|-----------|
| 1 | 1 | False | | |
| 2 | 2 | True | | |
| 3 | 2 | True | | |
| 4 | 3 | False | | |
| 5 | 4 | False | | |
| 6 | 5 | True | | |
| 7 | 5 | True | | |
| 8 | 5 | True | | |
MultipleSpell
列表示该拼写在表中多次出现
我想运行查询,将ID为1
,2
,4
,5
,6
的记录的FirstSpell
列更新为True
。因此,基本上,如果某个拼写是表中的第一个拼写,则应在FirstSpell
列中对其进行标记
然后,我还想将ID为1
,3
,4
,5
,8
的记录的LastSpell
列更新为True
原因是(如果您感兴趣的话)该表链接到一个单独的表,其中包含wards的名称。链接到另一个表并指明该病房是入院病房(FirstSpell
)还是出院病房(FirstSpell
)您可以使用以下方法更新第一个病房:
update spells
set firstspell = 1
where id = (select min(id)
from spells as s2
where spells.spellid = s2.spellid
);
类似的逻辑(使用max()
)可以用于最后一个法术