如果将项目插入表中,然后我编写一个查询,例如select * from table
,为什么结果与我期望的顺序不一样?
可以通过在语句中使用“Order by”子句来强制查询的顺序。 SQL 数据库实际上并不了解您放置内容的顺序,或者按照给定顺序存储数据。这意味着您需要告诉 SQL 您想要项目的顺序。例如:
Select * from Table
order by column1 desc
想象一下,这就像把一些东西交给你的朋友——她稍后会把所有的东西都给你,但同时她会把它存放在某个地方。当您不想为其他东西腾出空间时,她可能会移动它,或者可能按照您交给她的顺序将其交还给她,但您没有告诉她保持秩序,所以她不会。
数据库需要能够在后台移动事物,因此它们的构建方式本质上并不知道任何顺序 - 当您将其提供给数据库时,您需要知道顺序,以便您可以将其放回数据库中稍后订购您想要的。 order 子句允许 SQL 对数据强加一个顺序,但它不记得也不具有自己的顺序。
很重要的一点:即使 SQL 在最后 100 万次没有使用 order by 语句的情况下以正确的顺序返回项目,它也不能保证它会这样做。即使表上存在聚集索引,也不能保证结果按照您期望的顺序返回。特别是当 SQL 版本发生变化时,不显式使用 order by 子句可能会破坏假定查询将按照所需顺序排列的程序!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)