使用GROUPBY和COUNT执行SQL更新

使用GROUPBY和COUNT执行SQL更新,sql,sqlite,count,group-by,sql-update,Sql,Sqlite,Count,Group By,Sql Update,我正在SQLite数据库中使用SQL。我有一张像这样的桌子: STORAGE ------------------------------ REC_ID SEQ_NO NAME ------------------------------ 100 1 plastic jar 100 2 glass cup 100 fiber rug 101 1 steel

我正在SQLite数据库中使用SQL。我有一张像这样的桌子:

STORAGE
------------------------------
REC_ID   SEQ_NO       NAME
------------------------------
100       1          plastic jar
100       2          glass cup
100                  fiber rug
101       1          steel fork
101                  wool scarf
102       1          leather boots
102       2          paintbox
102       3          cast iron pan
102                  toolbox
请记住,与表中的实际记录相比,这是非常少的记录。我需要做的是更新表,以便所有SEQ_NO为空的记录都被设置为实际的数字,它们应该按照顺序排列到具有相同REC_ID的记录组中

以下是我希望表在更新后的外观:

STORAGE
------------------------------
REC_ID   SEQ_NO       NAME
------------------------------
100       1          plastic jar
100       2          glass cup
100       3          fiber rug
101       1          steel fork
101       2          wool scarf
102       1          leather boots
102       2          paintbox
102       3          cast iron pan
102       4          toolbox
例如,REC_ID为102的记录的序号应该为4,因为它是REC_ID为102的第四条记录

如果我这样做:

SELECT REC_ID, COUNT(*) FROM STORAGE GROUP BY REC_ID;
这将按REC_ID和与每个ID匹配的记录数返回所有记录,这也是我希望分配给每个序列号为空的记录的数

现在我该如何用它们的计数值来更新所有这些记录呢

这应该有效:

update storage set 
seq_no=(select count(*) from storage s2 where storage.rec_id=s2.rec_id)
where seq_no is null

我让它开始工作了,只是我不得不把它调换一下。我首先更新s2中的记录,然后将它们插入s1表。所以我更新了STORAGETWO SET SEQ_NO=SELECT COUNT*FROM STORAGE WHERE STORAGE.REC_ID=STORAGETWO.REC_ID;是的,这也有效,我现在删除了引起问题的别名。