2017-02-09 59 views
1

我有表如下在SQL精簡版在同一個數據排名

CREATE TABLE test(
    ID INT 
); 

用以下數據

Sample Data

我需要以下結果

ID Rank 
100 1 
100 2 
105 1 
105 2 
105 3 

我只需要使用正常SQL查詢無特殊功能

+0

爲什麼沒有特殊的功能呢? –

+0

我只能在SQL Lite中支持的函數 –

回答

4

您可以在相關查詢中使用rowid來獲得結果。因爲,rowid唯一標識爲行,我們可以在我們的案例中使用它來執行相關計數來分配行號。

試試這個:

select id, (
     select count(*) 
     from test t2 
     where t.id = t2.id 
      and t2.rowid <= t.rowid 
     ) rank 
from test t; 
+0

你能解釋你的答案嗎? – soundslikeodd

相關問題