使用GROUPBY和COUNT执行SQL更新
我正在SQLite数据库中使用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
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;是的,这也有效,我现在删除了引起问题的别名。