SQLite ORDER BY子句不起作用

时间:2016-03-09 12:25:53

标签: python sqlite

我有一个包含字段,用户名,密码,分数,杀戮和时间的数据库。我试图按升序按顺序排列所有记录,因此最高得分位于顶部。

我这样做的功能运行良好,不会产生错误,但不会以任何方式改变顺序。

我做错了吗?所有帮助表示赞赏。

功能:

# 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()函数来修复此问题。把它移到上面似乎又打破了它,我为什么感到困惑?

1 个答案:

答案 0 :(得分:1)

你的语法很好。但是,根据您要执行的操作,您需要按递减顺序排序,而不是按升序排序:

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

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

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