2016-03-09 92 views
-1

我有一個數據庫,包含字段,用戶名,密碼,分數,殺戮和時間。我試圖按照升序排列所有記錄,所以最高分在最高。SQLite的ORDER BY子句不起作用

我所做的功能運行良好,並且不會產生錯誤,但不會以任何方式更改順序。

我做錯了什麼?所有幫助讚賞。

功能:

# 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

你的語法很好。但是給你想要做什麼,你需要按遞減順序進行排序,不升:

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

的Sql考慮開始成爲世界一流,這就是爲什麼你需要降序,如果你想要的是最高是在頂部。

我想在使用ASC時排序沒有變化,因爲數據已經按升序排序了。

+0

謝謝,文檔頁面由於某種原因顯示錯誤的方式。仍然有問題,打印出來的東西永遠不會改變,但我相信這是我的功能顯示它是錯誤的。 –