Sqlite

sqlite有序表中條目的位置

  • August 1, 2021

我正在嘗試訂購一個表格並返回該有序表格中一行的位置。就上下文而言,我正在為一個不和諧的機器人開發一個調平系統並嘗試實施一個等級命令。該命令將顯示使用者相對於伺服器其餘部分的 xp。例如。“您在此伺服器中的 XP 排名第 25 位”。我可以訂購桌子,SELECT * FROM users ORDER by xp DESC但很難獲得條目的位置。如果您能提供任何建議,我將不勝感激

我的表結構如下:

CREATE TABLE "users" (
"guild_id"  INTEGER NOT NULL,
"user_id"   INTEGER NOT NULL,
"xp"    INTEGER DEFAULT 0,
PRIMARY KEY("guild_id","user_id")

你可以用ROW_NUMBER這個。

SELECT YourRank
FROM (
   SELECT *,
     ROW_NUMBER() OVER (ORDER BY xp DESC) AS YourRank
   FROM users
) u
WHERE u.user_id = @someId;

如果你想要並列排名,你也可以使用RANKDENSE_RANK

引用自:https://dba.stackexchange.com/questions/297453