[英]How do I order my SQL results in the same order of my query (a sentence broken down into a tuple of words)?
[英]Why do results from a SQL query not come back in the order I expect?
如果將項目插入表中,然后我編寫一個查詢,例如select * from table
,為什么結果不符合我的預期?
可以使用語句中的“Order by”子句強制查詢的順序。 SQL數據庫實際上並不了解您放入內容的順序,或以給定順序存儲數據。 這意味着您需要告訴SQL您希望項目的順序。例如:
Select * from Table
order by column1 desc
想想就像將一些東西交給你的朋友一樣 - 她將在以后為你提供所有這些東西,但她會在同一時間將它存放到某個地方。 當你不打算為其他東西騰出空間時,她可能會移動它,或者可能按照你給她的順序將它移回去,但是你並沒有告訴她要保持順序,所以她沒有。
數據庫需要能夠在后台移動,因此它們的構建方式本質上不知道任何順序 - 當您將數據提供給數據庫時需要知道順序,以便您可以將其放回到數據庫中。你想要的訂單。 order子句允許SQL對數據強加一個順序,但它不記得或者有一個單獨的數據。
重要的一點 :即使SQL在沒有order by語句的情況下以正確的順序返回項目的最后100萬次,也不能保證它會這樣做。 即使表上存在聚簇索引,也不能保證按預期的順序返回結果。 特別是當SQL版本發生更改時,未明確使用order by子句可能會破壞假定查詢將按其所需順序排列的程序!
期望按插入順序得出結果是一種常見的誤解。 即使使用聚簇索引,結果集也可能不符合預期。 強制執行訂單的唯一方法是使用“order by”子句。 訂單與預期不同的原因可能會有所不同。 查詢可以並行執行,並且結果集可以合並,或者可以歸因於查詢優化計划,同時盡可能快地返回結果集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.