使用数字表模拟行号

时间:2011-05-29 14:41:03

标签: sql

如何使用数字表模拟表的行号而不使用ROW_NUMBER()函数。

样本表: 创建表帐户 (    account_num VARCHAR(25),    主键(account_num) )

数字表有1码行。

2 个答案:

答案 0 :(得分:1)

如果你有意思,当它不可用时(又称MySQL),尝试这样的事情:

select @rownum := @rownum + 1 rownum,
       t.*
from (select * from table t order by col) t,
     (select @rownum := 0) r

它会产生与:

相同的结果
select row_number() over (order by col)
from table
order by col

答案 1 :(得分:0)

Numbers表对此没有帮助,因为您无法将表中的值与Numbers表中的数字相关联。但是,如果您询问是否可以在不使用ROW_NUMBER()或变量的情况下创建序列,则可以这样做:

Select A1.Account_Num, Count( A2.Account_Num ) + 1 As Num
From Accounts As A1
    Left Join Accounts As A2
        On A2.Account_Num < A1.Account_Num
Group By A1.Account_Num