如何在不使用 ROW_NUMBER() 的情况下模拟 ROW_NUMBER() 功能?

Cla*_*dio 2 sql sqlite

我在练习中遇到了这个问题,它让我发疯,我无法修复它......基本上我使用的是 SQLLite,所以我只能使用任何窗口函数来获得结果,而且更痛苦部分原因是已创建的架构上没有唯一的 id。参见示例:

**Name,  DateAdded,  Amount**
John,  2015-10-12, 100.00
John,  2015-10-15, 50.00
Aaron, 2015-09-20, 10.00
Paul,  2014-12-20, 24.00
Paul,  2015-12-23, 32.00
Run Code Online (Sandbox Code Playgroud)

当您没有任何唯一的 id 可供参考时,在 SQL Lite 中使用 ROW_NUMBER() 的替代方法是什么?我想按名称分区并按金额排序。

提前致谢。

Ham*_*one 6

这很丑陋,但由于没有窗口函数,这是我所知道的模仿该row_number函数的唯一方法:

select
  t.Name, t.DateAdded, t.Amount,
  ( select count (*)
     from MyTable u
     where
       t.Name = u.Name and
       t.DateAdded >= u.DateAdded
  ) as row_number
from MyTable t
Run Code Online (Sandbox Code Playgroud)

结果:

John    2015-10-12  100 1
John    2015-10-15  50  2
Aaron   2015-09-20  10  1
Paul    2014-12-20  24  1
Paul    2014-12-23  32  2
Run Code Online (Sandbox Code Playgroud)