我在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的SEQ_NO,因为它是具有REC_ID 102的第四条记录。
如果我这样做:
SELECT REC_ID, COUNT(*) FROM STORAGE GROUP BY REC_ID;
这将返回REC_ID的所有记录以及与每个ID匹配的记录的数量(计数),这也是我想要为每个具有空SEQ_NO的记录分配的数字。
现在,我将如何使用计数值实际更新所有这些记录?
答案 0 :(得分:1)
这应该有效:
update storage set
seq_no=(select count(*) from storage s2 where storage.rec_id=s2.rec_id)
where seq_no is null