Reposting [my answer][1] to a similar question regarding SQL Server: > In the SQL world, order is not an inherent property of a set of data. > Thus, you get no guarantees from your RDBMS that your data will come > back in a certain order -- or even in a consistent order -- unless you > query your data with an ORDER BY clause. So, to answer your question: - MySQL sorts the records however it wants without any guarantee of consistency. - If you intend to rely on this order for anything, **you must specify your desired order using `ORDER BY`. To do anything else is to set yourself up for unwelcome surprises.** This is a property of all SQL, not just MySQL. The relevant text in the [SQL-92 spec](http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt) is: <!-- language-all: lang-none --> > If an <order by clause> is not specified, then the ordering of the rows of Q is implementation-dependent. There are similar bits of text in the spec for cursors. [1]: https://dba.stackexchange.com/questions/5774/why-is-ssms-inserting-new-rows-at-the-top-of-a-table-not-the-bottom/5775#5775