【问题标题】:SQLite ORDER BY clause not workingSQLite ORDER BY 子句不起作用
【发布时间】:2016-03-09 12:25:53
【问题描述】:

我有一个包含字段、用户名、密码、分数、击杀数和时间的数据库。我正在尝试按分数升序对所有记录进行排序,因此最高分位于顶部。

我为此创建的函数运行良好,不会产生错误,但不会以任何方式改变顺序。

我做错了吗?感谢所有帮助。

功能:

# Orders database by high score
def order_db():
    """
    Orders the database rows,
    so first row has highest
    score.
    """
    open_db()
    command = ("""
                SELECT * FROM players
                ORDER BY score ASC
                """)
    cur.execute(command)
    close_db()

完整代码: http://pastebin.com/Bw14dTaa

我尝试过以不同方式更改函数,使用:

cur.executemany(command)

或者改变SQLite语句的格式:

("""
SELECT * FROM players
ORDER BY score ASC;
 """)

编辑:

所以我的 display_db() 函数搞砸了,没有按顺序显示它们。在执行 select 语句后,我通过在其中移动 order_db() 函数来解决此问题。将它移到上面似乎又破坏了它,我很困惑为什么?

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    你的语法很好。但是,考虑到您想要做什么,您需要按降序排序,而不是升序:

    command = ("""SELECT * FROM players
                  ORDER BY score DESC
               """)
    

    Sql认为开头是顶部,这就是为什么如果你想让最高的在顶部,你需要DESC。

    我想当你使用 ASC 时排序没有变化,因为数据已经按升序排序了。

    【讨论】:

    • 谢谢,由于某种原因,文档页面显示错误。仍然存在打印出来的内容永远不会改变的问题,但我认为我的显示功能有问题。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多