当前位置: 首页 > 知识库问答 >
问题:

为什么SQL查询的结果不能按我期望的顺序返回?

金飞翼
2023-03-14

如果在表中插入了项,然后我编写了一个查询,例如Select*from table,为什么结果不是按照我期望的顺序?

共有2个答案

龙永思
2023-03-14

期望结果按插入的顺序出现是一种常见的误解。即使使用聚集索引,结果集也可能不符合预期。强制执行命令的唯一方法是使用“ORDERBY”子句。订单与预期不同的原因可能会有所不同。查询可以并行执行,结果集可以合并,也可能是由于在尝试尽快返回结果集时执行了查询优化计划。

尹超
2023-03-14

查询的顺序可以通过在语句中使用订单子句强制执行。SQL数据库实际上不理解您将事情放在什么顺序中,或者以给定的顺序存储数据。这意味着你需要告诉SQL你想要项目的顺序。例如:

Select * from Table
  order by column1 desc

想象一下,就像把一些东西交给你的朋友拿着一样——她稍后会把所有的东西都给你,但同时她会把它们存放在某个地方。她可能会在你不想为其他东西腾出空间的时候移动它,或者可能会按照你给她的顺序把它还给你,但是你没有告诉她要把它整理好,所以她没有。

数据库需要能够在后台移动对象,因此它们的构建方式本质上不知道任何顺序——当您将其交给数据库时,您需要知道顺序,以便以后可以按您想要的顺序将其放回。order子句允许SQL对数据施加顺序,但它自己不记得或没有顺序。

要点:即使SQL在过去100万次中没有ORDERBY语句以正确的顺序返回项目,也不能保证它会这样做。即使表上存在聚集索引,也不能保证按预期的顺序返回结果。特别是当SQL版本发生更改时,如果不显式使用ORDERBY子句,可能会破坏假定查询将按所需顺序进行的程序!

 类似资料:
  • 问题内容: 我有一堆应聘者,他们有一些或多个工作,每个人都在公司工作,并且使用了一些技能。 坏的ascii艺术如下: 这是我的数据库: 。 。 。 。 这是我对查询的尝试(请注意,我打算将通配符更改为字段名称;我只是想使某些功能生效): HediSql说 查询出了什么问题?我希望从不良的ascii艺术中可以清楚地知道我要达到的目标。 (此外,它对我连接表的顺序是否有任何速度差异?我将担心新的MyS

  • 我正在查询SQL数据库,但由于某些原因,结果项会随机返回。这是我的密码: searchFriendEmailArrayNew是一个电子邮件地址数组,因此当我查询数据库表时,它会使用电子邮件来查找该用户。数组始终保持一致且顺序相同: user1@email.com 查询总是按照这个顺序进行的。 然后,我查询用户的所选字段,在本例中,我查询的是“isriding”字段。此字段是返回true或false

  • 我有以下表格结构: 1-课程(course_id、course_nam、语言、course_price、create_date、average_rating、course_description、certifica_price、course_creator_id) 2-学生(学生证、钱包) 3-折扣(折扣id、折扣课程id、允许的许可课程id、开始日期、结束日期、百分比) 4-报名(student

  • 我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我

  • 问题内容: 是否可以以预定顺序进行声明,即 选择ID 7,2,5,9和8 并以该顺序返回它们 ,仅基于ID字段? 这两个语句以相同顺序返回它们: 问题答案: 我不认为这是可能的,但是在这里找到了一个博客条目,似乎可以满足您的需求: 将给不同的结果 返回给定第二个参数的位置,因此对于上面的第一种情况,7的位置在集合中的位置1,2的位置在2,依此类推-mysql在内部得出类似 然后按的结果排序。

  • 问题内容: 为什么更改总和顺序会返回不同的结果? = = 双方的Java和JavaScript的返回相同的结果。 我知道,由于以二进制表示浮点数的方式,某些有理数( 例如1/3-0.333333 … )无法精确表示。 为什么简单地更改元素的顺序会影响结果? 问题答案: 也许这个问题很愚蠢,但是为什么仅仅改变元素的顺序会影响结果呢? 它将根据值的大小更改四舍五入的点。作为示例 _样的_事情,我们所看