首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于变量的增量值

基于变量的增量值
EN

Stack Overflow用户
提问于 2018-08-16 00:20:54
回答 1查看 26关注 0票数 0

我有一个表,看起来像这样:

代码语言:javascript
复制
DATE         user_id  amount_spent
2018-04-16    xxxx     0.99
2018-05-16    xcxc     5.10
2018-05-18    xdxd     4.99
2018-04-17    xvxv     7.00
...

我需要添加另一个名为ID的列,该列的范围为1 to n,并指示每个用户购买的位置。1是第一次购买的顺序,n是最后一次购买的顺序。

所以它会输出类似这样的内容:

代码语言:javascript
复制
DATE         user_id  amount_spent   ID
2018-04-16    xxxx     0.99          1
2018-05-16    xcxc     5.10          2
2018-05-18    xdxd     4.99          4
2018-04-17    xvxv     7.00          3
...

所以我的代码看起来像这样:

代码语言:javascript
复制
    ALTER TABLE temp_table
    ADD ID VARCHAR;

  UPDATE temp_table SET ID = (SELECT * FROM (WITH RECURSIVE
  cnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x< (select count(*) from temp_table))
SELECT x FROM cnt));

但是,ID不与日期相关联,并且对于每个ID,它只输出1

如有任何帮助,将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 00:44:08

使用correlated subquery计算有多少行具有较小的日期值:

代码语言:javascript
复制
UPDATE temp_table
SET ID = (SELECT count(*)
          FROM temp_table AS t2
          WHERE t2.DATE <= temp_table.DATE);

或者,使用正确的ORDER BY将行插入到临时表中,则rowid值是正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51862568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档