我想通過最近登錄的方式對mysql進行排序,但每次登錄時我都要求助,如何排序並保存最新的登錄信息?如何排序mysql
回答
您不能可靠地保存MySQL中按字母順序存儲的值。您所能做的最好的是在您的SELECT
查詢中使用ORDER BY
子句。
通常你通過添加一個「ORDER BY」子句進行選擇。你爲什麼關心它們實際存儲在表中的順序?
如果你真的在乎,我想你可以做一個INSERT ... SELECT在排序列的同時將它複製到一個新表中,但是無論何時添加一條新記錄,它都會在列表的末尾結束。
SQL不能這樣工作。它不像電子表格那樣,行是爲了「按原樣」讀取的,您可以將它們按照某種有意義的順序排列。你所做的任何事情都不會改變SQL存儲行的順序.SQL通過查詢爲你提供數據,查詢以什麼順序告訴它你想查看哪些行。
因此,您必須在每次希望以特定順序查看數據時重用「order by」子句。但是,您不應該需要手動查詢SQL。如果您正在編寫任何類型的腳本或應用程序來處理它,您只需編寫一次查詢,並在每次需要數據時重新運行它。
爲了讓您的用戶表的最後一次登錄,您可以使用查詢像
SELECT user_name, login_datetime
FROM user_table
ORDER BY login_datetime DESC
LIMIT 1
假設user_name
是你正在尋找和login_datetime
是你可以訂購一個時間戳字段。 LIMIT 1
將只顯示最高的結果,並可根據您的需要進行更改。
使用MySQL的InnoDB引擎,您的行根據主鍵進行物理排序。因此,如果主鍵位於login
列,則行將按照login
中的值保持物理順序。
主鍵的要求是每個值必須是唯一的,並且不允許NULL。因此,您可以考慮將login
列作爲主鍵。如果login
是日期時間列,則最新的登錄日期時間值將始終位於表的末尾。
許多人使用自動增量整數列作爲主鍵。在這種情況下,要插入的最後一條記錄始終位於表格的末尾。
在某些情況下,您必須知道讓某些行按照物理順序(通過特定列)的價值,否則您不會問。
例如,執行下列SELECT
返回按物理順序的行(與主鍵),而不必指定一個列訂購由所述結果,並且不強制MySQL來稍後再點結果集:
SELECT *
FROM test
但是,如果您需要按主鍵以外的順序排列結果,則應該使用ORDER BY
子句。例如,如果該行被列name
物理排序的,但要通過login
結果,以便返回時,你會發出以下查詢:
SELECT *
FROM test
ORDER BY login ASC
上面的查詢請求的MySQL命令根據行指定的列。您在ORDER BY
子句中指定ASC
以升序排列值,DESC
以降序排列。
- 1. 記錄如何在mysql組中排序?
- 2. mySQL如何按日期時間排序?
- 3. 如何反向排序mysql數據
- 4. 如何按升序排列MySQL列?
- 5. MYSQL如何在連接表中排序
- 6. 如何在mysql中按組排序?
- 7. mysql如何排序字符串?
- 8. MYSQL/PHP的 - 如何使從MySQL排序結果「排序」下拉列表
- 9. 排序MySQL表
- 10. MySQL Field()排序
- 11. mysql varchar排序
- 12. MySQL 2D排序
- 13. mysql排序位
- 14. 排序在MySQL
- 15. 排序MySQL表
- 16. 排序兩列升序php mysql排序
- 17. MYSQL:優化表排序排序
- 18. MySql排序在排序結果集內
- 19. 排序/排序MySQL中的數據對?
- 20. MySQL排序通過不排序?
- 21. MYSQL高級排序
- 22. MySql排序加入?
- 23. 在MySQL中排序/
- 24. MYSQL排序和鎖
- 25. MySQL的排序VARCHAR
- 26. MYSQL排序GROUP BY
- 27. Php排序mysql表
- 28. MySQL排序查詢
- 29. MYSQL排序奧德
- 30. 組排序在MySQL
爲什麼你需要物理地度假表? 'SELECT blah FROM table ORDER BY name'會足夠嗎? – Ryan 2012-03-05 18:33:21
@Melissa因爲我想排序它最新登錄... – Lukus 2012-03-05 18:36:30
我需要了解什麼是問題,試圖幫助你。你可以選擇他們排序? ... – 2012-03-05 18:36:45