sql - 使用 GROUP BY 和 COUNT 执行 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 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 的记录的 SEQ_NO 应该为 4,因为它是 REC_ID 为 102 的第四条记录。

如果我做:
SELECT REC_ID, COUNT(*) FROM STORAGE GROUP BY REC_ID;

这将按 REC_ID 和与每个 ID 匹配的记录数(计数)返回所有记录,这也是我想要分配给每个 SEQ_NO 为空的记录的数字。

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

最佳答案

这应该工作:

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

关于sql - 使用 GROUP BY 和 COUNT 执行 SQL UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22288029/

相关文章:

sql - MySQL COUNT(DISTINCT()) 意外结果

sql - 具有服务器和本地副本的记录的数据库设计

mysql - CONCAT 与 ROLLUP

android - 应用程序在 android 中意外停止

sqlite - 是什么导致这个 sqlite 外键不匹配?

sql - RoundFunctionSQL 最多到最接近的 10

SQLite:使用 COUNT 和 GROUP BY 加速 SQL 语句

MYSQL 包括列 w。计数为 0

mysql - 计数(*)+分组依据+有

excel - 包含特定文本的单元格计数