使用GROUP BY和COUNT执行SQL UPDATE

时间:2014-03-09 20:54:20

标签: 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 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的记录分配的数字。

现在,我将如何使用计数值实际更新所有这些记录?

1 个答案:

答案 0 :(得分:1)

这应该有效:

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