SQLSERVER的排序问题结果不是想要的

在论坛里经常有人问这样的问题

同一个查询的结果集为什麽有时候是按他想要的顺序排列,有时候又不是,或者是在SQL2000里是这个顺序,到了SQL2005/2008又是那个顺序?

其实,只要语句里没有指定“order by”,SQLSERVER并不会按照顺序返回的。有可能你的表里有一个字段已经建立了索引

你想结果集按照那个建立了索引的字段排序,那么你不指定“order by”是没有问题的,因为表的存储顺序就是按照那个字段的顺序排好序了,所以可以不指定“order by”,但是如果你没有在想排序的那个字段建立索引,或者在SQL2000里建立了索引,而在SQL2005/2008里没有建立索引,那么就要明确地用“order by”指定。如果你没有指定,哪怕一模一样的查询,

结果集顺序这一次和上一次不一样是很正常的。

(0)

相关推荐

  • SQLSERVER的排序问题结果不是想要的

    在论坛里经常有人问这样的问题: 同一个查询的结果集为什麽有时候是按他想要的顺序排列,有时候又不是,或者是在SQL2000里是这个顺序,到了SQL2005/2008又是那个顺序? 其实,只要语句里没有指定"order by",SQLSERVER并不会按照顺序返回的.有可能你的表里有一个字段已经建立了索引 你想结果集按照那个建立了索引的字段排序,那么你不指定"order by"是没有问题的,因为表的存储顺序就是按照那个字段的顺序排好序了,所以可以不指定"ord

  • SQLserver排序规则基本概念探索

    前言 昨天在论坛里面遇到一个比较特殊的场景.他的公司做的是海外的项目,中英再加一个当地语言,要兼容三种文字啊. 那有没有什么字符集或排序规则,能兼容所有文字的?对于海外项目很痛苦啊 .Oracle 有AL32UTF8 ,MySQL 有UTF8 ,那SQL Server 有吗? 基本概念 ASCII编码 在计算机发明后不久,计算机只在美国用.他们创造出了ASCII编码,来表示:空格.标点符号.数字.大小写字母,控制符等.可以完整的表达所有的英文.但是也只支持英文. GBK编码 后来随着计算机的流行

  • SqlServer 按时间段查询问题

    百度的资料,保存下来: 在写按时间段查询的sql语句的时候 一般我们会这么写查询条件: where date>='2010-01-01' and date<='2010-10-1' 但是在实执行Sql时些语句会转换成这样: where date>='2010-01-01 0:00:00' and date<='2010-10-1:0:00:00',再看这个条件的话,也许就会有些明白, 那就是'2010-10-1 0:00:00' 之后的数据例如('2010-10-1:08:25:0

  • SqlServer索引的原理与应用详解

    索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书.在数据库中,数据库程序使用索引可以重啊到表中的数据,而不必扫描整个表.书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表. 索引的利弊:查询执行的大部分开销是I/O,使用索引提高性能的一个主要目标是避免全表扫描,因

  • 整理一下SQLSERVER的排序规则

    SQL SERVER的排序规则平时使用不是很多,也许不少初学者还比较陌生,但有 一个错误大家应是经常碰到:  SQL  SERVER数据库,在跨库多表连接查询时,若两数据 库默认字符集不同,系统就会返回这样的错误: "无法解决  equal  to  操作的排序规则冲突." 一.错误分析: 这个错误是因为排序规则不一致造成的,我们做个测试,比如: create  table  #t1( name  varchar(20)  collate  Albanian_CI_AI_WS,    

  • sqlserver 数据库压缩与数据库日志(ldf)压缩方法分享

    Access 操作很简单,具体不步骤如下:打开你mdb数据库,工具-->数据库实用工具-->压缩和修复数据库(c)... SQL SERVER 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQLServer-->SQLServer组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数

  • SQLServer数据库从高版本降级到低版本实例详解

    SQLServer数据库从高版本降级到低版本实例详解 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度

  • SqlServer 索引自动优化工具

    鉴于人手严重不足(当时算两个半人的资源),打消了逐个库手动去改的念头.当前的程序结构不允许搞革命的做法,只能搞搞改良,所以准备搞个自动化工具去处理.原型刚开发完,开会的时候以拿出来就遭到运维DBA团队强烈抵制,具体原因不详.最后无限延期.这里把思路分享下.欢迎拍砖. 整个思路是这样的,索引都是为查询和更新服务的,但是不合适的索引又会对插入和更新带来负面影响.面对表上现有的索引想识别那些是有效的不太可能.那么根据现有的数据使用情况重建所有的新索引不就解决了嘛.根据查询生成全新索引,然后和现有对比,

  • 使用cmd命令行窗口操作SqlServer的方法

    osql 工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件.osql 工具使用 ODBC 数据库应用程序编程接口 (API) 与服务器通讯. 本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver,首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来. osql下载地址 http://www.jb51.net/database/57662.ht

  • SQLServer 2008数据库降级到2005低版本

    由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接[分离/附加]或者[备份/还原]数据库,在不同版本之间存放.往往就会遇到版本不兼容的问题.前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错: 从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错.除非使

随机推荐