如果將項目插入表中,然後編寫查詢(如select * from table
),爲什麼結果不符合我的預期?爲什麼SQL查詢的結果不按照我預期的順序回來?
2
A
回答
9
查詢的順序可以通過在語句中使用'Order by'子句來強制執行。一個SQL數據庫實際上並不瞭解你以什麼順序放入或按給定順序存儲數據。這意味着,你需要告訴SQL什麼順序要在項目例如:
Select * from Table
order by column1 desc
想想看像給一些東西給你的朋友舉行 - 之後她將所有的它適合你,但她同時將它存儲在某個地方。當你不想爲其他東西騰出空間時,她可能會移動它,或者可能會按照您給予她的順序將它交回,但是您沒有告訴她要保持順序,所以她沒有。
數據庫需要能夠在後臺移動東西,因此它們的構建方式本質上並不瞭解任何順序 - 當您將它提供給數據庫時,您需要知道順序,以便可以將它會按照您稍後想要的順序恢復。 order子句允許SQL對數據施加一個順序,但它不記住或自己擁有一個順序。
重要點:即使SQL以正確的順序返回項目時沒有按最後一次100萬次的語句順序,它也不能保證它會這樣做。即使表中存在聚集索引,結果也不能保證以您期望的順序返回。特別是當SQL版本發生變化時,不明確地使用order by子句可能會破壞假設查詢將按照他們想要的順序的程序!
2
預期插入順序的結果是一種常見的誤解。即使使用聚集索引,結果集也可能不如預期的那樣。唯一強制執行命令的方法是使用「order by」子句。訂單與預期不同的原因可能會有所不同。查詢可以並行執行,結果集可能會合並,也可能是由於查詢優化計劃,而嘗試儘可能快地返回結果集。
相關問題
- 1. 爲什麼我的LINQ查詢不給我預期的結果
- 2. SQL查詢不返回預期結果
- 3. 爲什麼我沒有按預期順序獲得排序函數的結果?
- 4. 這個DL查詢爲什麼不返回預期結果?
- 5. 查詢不返回預期的結果
- 6. SQL查詢未返回預期結果
- 7. 我應該執行什麼SQL查詢來獲得預期的結果集?
- 8. 查詢未返回預期結果我缺少什麼
- 9. 我的SQL Server查詢無法返回預期的結果
- 10. 爲什麼sort_heap沒有按照我預期的順序放置元素?
- 11. PHP中的SQL查詢不返回預期的結果
- 12. Solr查詢不返回預期結果
- 13. Solr查詢不返回預期結果
- 14. MongoDB查詢不返回預期結果
- 15. ElasticSearch查詢不返回預期結果
- 16. MySQL查詢不返回預期結果
- 17. 爲什麼該查詢不能按我的預期工作?
- 18. Drools的查詢返回結果的順序是什麼?
- 19. 爲什麼我的查詢結果隨機回來?
- 20. 爲什麼我的SQL查詢返回重複結果?
- 21. 不明白爲什麼MySQL查詢沒有返回預期的結果
- 22. SQL REPLACE語句不會返回子查詢的預期結果
- 23. 爲什麼我的FQL照片請求不能返回所有查詢結果?
- 24. 查詢返回比預期的結果
- 25. SQL - 爲什麼這3個查詢的結果不加起來?
- 26. 查詢不返回預測結果 - 我錯過了什麼?
- 27. SQL:爲什麼這些查詢返回不同的結果?
- 28. 按照手動提供的值的順序顯示SQL查詢結果
- 29. 爲什麼我的查詢返回不正確的結果?
- 30. 按照字母順序排列所有結果的SQL查詢除外?
我喜歡「重要的一點」 - 這對於瞭解您是否希望避免未來的錯誤至關重要! – Simon
+1 - 簡潔明瞭的答案。最近有很多「插入順序」問題。 – Lamak
如果我們可以從現在開始將這些問題合併到一起,並且在一百萬個地方對同一個問題沒有很好的答案,那將會很棒! –