sqlite3模块中的ROW_NUMBER函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlite3模块中的ROW_NUMBER函数相关的知识,希望对你有一定的参考价值。

我正在使用node.js中的sqlite3模块来创建sqlite数据库并与之交互,我正在尝试使用ROW_NUMBER函数,但我似乎无法让它工作,并且想知道是否该函数甚至存在在sqlite中与在SQL中一样。

    client.db.each('SELECT ROW_NUMBER() OVER (ORDER BY guildbank DESC LIMIT 10) rownum, guildname, guildbank FROM guilds', [], (err, row1) => {
    if(err) {
        console.error(err.message)
    }
    if(row1.guildname == message.guild.name) istopten = true
    embed.addField(`${row1.rownum}. ${row1.guildname}`, `has ${row1.guildbank} yen in their guild bank!`)
    if(istopten) {
        client.db.each('SELECT ROW_NUMBER() OVER (ORDER BY guildbank) rownum, guildname, guildbank FROM guilds', [], (err, row2) => {
            if(err) {
                console.error(err.message)
            }
            if(row2.guildname == message.guild.name) embed.setFooter(`Your guild is in `)
        })
    }
})

我得到的错误是引用row1没有guildname属性,我得出的结论是我的查询是错误的原因。任何帮助,将不胜感激。

编辑:

SQLITE_ERROR: near "LIMIT": syntax error
C:UsersAdamDesktopprojectsyabe-reworkedCoding-Yabe-Sei
ode_modulessqlite3lib	race.js:27
                    throw err;
                    ^

TypeError: Cannot read property 'guildname' of undefined
    at client.db.each (C:UsersAdamDesktopprojectsyabe-reworkedCoding-Yabe-Seicommandseconomyleaderboard.js:11:17)

是错误的相关部分

答案

我的愚蠢错误,我真的应该知道更好,不能把LIMIT 10放在ROW_NUMBER函数中,你必须把它放在查询的末尾。谢谢你的想法:)

以上是关于sqlite3模块中的ROW_NUMBER函数的主要内容,如果未能解决你的问题,请参考以下文章

如果不使用 sqlite 中的 row_number() 函数,如何提供相同的函数?

代码杂谈-SQL中的rank&row_number函数

SQLite:仅返回每组中的前 2 个结果

前 MariaDB 版本中的 Row_Number() 窗口函数

ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法