社区
MS-SQL Server
帖子详情
问一下,在select的时候如果没有加order by子句,那么结果是按照什么来排序的
defender
2003-05-09 10:34:40
请考虑一下牵扯到多表复合查询的情况
...全文
377
22
打赏
收藏
问一下,在select的时候如果没有加order by子句,那么结果是按照什么来排序的
请考虑一下牵扯到多表复合查询的情况
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blactte
2003-05-09
打赏
举报
回复
不好意思,看错题目了
有很多人不看联机帮助,就过来发贴子,我也是没办法
如果没有ORDER BY 子句,是根据表的物理存储顺序来显示的
表的物理存储顺序是按照聚簇索引所建立的字段排序,然后进行存储的
一般是主键的顺序,如果没有主键就是聚簇索引字段的顺序,如果两者都没有,就是按照插入记录的先后次序显示
leimin
2003-05-09
打赏
举报
回复
MSSQLSERVER的排序一般是根据CLUSTERED INDEX来排序的,但是在查询时SQL SERVER有时并不根据CLUSTERED INDEX来检索数据,所以这就造成检索数据时的排序不一致,有时根据CLUSTERED INDEX排序,有时根据系统默认的排序规则(根据字符集不同)排序.SQL SERVER有一个阀值.
你可以通过SHOW EXECUTION PLAN看到QUERY时执行的规划来了解.
defender
2003-05-09
打赏
举报
回复
那么这个所谓的:物理存储顺序 又是按照什么规则来排序的呢
有聚集索引的时候自然是按照索引的顺序了,那没有索引的时候又是按照什么规则呢
还是没明白
CrazyFor
2003-05-09
打赏
举报
回复
表的物理存储顺序
iainet
2003-05-09
打赏
举报
回复
同意BLACTTE的说法!
TO:defender:物理存储顺序:请参见:
聚集索引
在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。
如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。
有关使用聚集索引的更多信息,请参见创建聚集索引。
defender
2003-05-09
打赏
举报
回复
to blactte(想认识我吗?在靠近一点!)
老大,请看清楚题目,我没有用order by 子句,我昏,不要老抄联机丛书
defender
2003-05-09
打赏
举报
回复
越来越复杂了
物理存储顺序:关系数据库里有这种说法吗,恕我无知
若没有主键就按第一个字段升序排,然后是第二个字段,依次下去:没有充分测试,有点像
期待着高手的到来
blactte
2003-05-09
打赏
举报
回复
ORDER BY 子句按查询结果中的一列或多列对查询结果进行排序,用作排序依据的列总长度可达 8,060。有关 ORDER BY 子句最大大小的更多信息,请参见 SELECT。
排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果没有指定升序还是降序,就假定为 ASC。
重要 ORDER BY 子句的确切结果取决于安装过程中所选的排序规则。有关不同排序规则所产生的影响的更多信息,请参见 SQL Server 排序规则基础知识。
下列查询返回按 pub_id 升序排列的结果。
USE pubs
SELECT pub_id, type, title_id
FROM titles
ORDER BY pub_id
下面是结果集:
pub_id type title_id
------ ------------ --------
0736 business BU2075
0736 psychology PS2091
0736 psychology PS2106
0736 psychology PS3333
0736 psychology PS7777
0877 mod_cook MC2222
0877 mod_cook MC3021
0877 UNDECIDED MC3026
0877 psychology PS1372
0877 trad_cook TC3218
0877 trad_cook TC4203
0877 trad_cook TC7777
1389 business BU1032
1389 business BU1111
1389 business BU7832
1389 popular_comp PC1035
1389 popular_comp PC8888
1389 popular_comp PC9999
(18 row(s) affected)
如果在 ORDER BY 子句中指定了不止一列,排序就是嵌套的。下列语句对 titles 表中的行进行排序,首先按出版商降序排列,然后在各出版商范围内按类型升序排列,最后按价格排序(同样是升序,因为未指定 DESC)。
USE pubs
SELECT pub_id, type, title_id, price
FROM titles
ORDER BY pub_id DESC, type, price
说明 不能对数据类型为 text 或 image 的列使用 ORDER BY。同样,在 ORDER BY 列表中也不允许使用子查询、聚合和常量表达式;不过,可以在聚合或表达式的选择列表中使用用户指定的名称,例如:
SELECT type, sum (ytd_sales) AS sales_total
FROM titles
GROUP BY type
ORDER BY sales_total
firetoucher
2003-05-09
打赏
举报
回复
不一定吧
如果数据库使用hash的话,物理顺序不一定是读出的顺序。
我想可能和数据库的查找机制有关。
sasacat
2003-05-09
打赏
举报
回复
我觉得SQL没有什么物理存储顺序吧?
“若没有主键就按第一个字段升序排,然后是第二个字段,依次下去”这个不是这么简单的,你自己试试就知道不是这样了
yoki
2003-05-09
打赏
举报
回复
可能是按照第一个表的物理存储顺序吧
psxfghost
2003-05-09
打赏
举报
回复
若没有主键就按第一个字段升序排,然后是第二个字段,依次下去
sasacat
2003-05-09
打赏
举报
回复
那你为什么不用ORDER BY呢?
psxfghost
2003-05-09
打赏
举报
回复
按主键升序排序,多表就是按照from后的第一个表升序排序!
或者你修改排序的默认设置,就可以按你需要的排了,不过这样还不如用order by
defender
2003-05-09
打赏
举报
回复
什么叫:按从数据库中读出记录的顺序
不是很明白
defender
2003-05-09
打赏
举报
回复
如果表里面没有主键怎办
上面忘了说了,我的所有表都没有主键,只有索引,虽然每一条记录都有一个唯一的值可以确定该条记录,不要问为什么,这个我决定不了,和现在的话题也无关 :(
愉快的登山者
2003-05-09
打赏
举报
回复
按从数据库中读出记录的顺序。
healoppy
2003-05-09
打赏
举报
回复
是结果集的升序排列
sasacat
2003-05-09
打赏
举报
回复
我想是按主键吧
多表的话就是FROM后第一个表的主键
mateng7654
2003-05-09
打赏
举报
回复
说了这么多自己试试不就行了吗?
加载更多回复(2)
select
语句的执行顺序,
order
by
子句
介绍,group by
子句
介绍
1.
select
语句的语法顺序(数字为执行顺序) 5.
select
[字段列表] 1.from [表名] 2. where [条件] 3.group by [列] 4. having [筛选条件] 6.
order
by [列] 注:
order
by可以跟列的别名,其他
子句
不可以,是因为在第五步才给列起了别名,所以其...
让SQL查询结果井井有条:
ORDER
BY
子句
的妙用
SQL语句由
子句
构成,有些
子句
是必需的,有些则是可选的。
子句
的例子有我们在前一课看到的
SELECT
语句的FROM
子句
。关系数据库设计理论认为,如果不明确规定
排序
顺序,则不应该假定检索出的数据的顺序有任何意义。通常,
ORDER
BY
子句
中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列
排序
数据是完全合法的。如果不
排序
,数据一般将以它在表中出现的顺序显示,这有可能是数据最初添
加
到表中的顺序。列以字母顺序
排序
数据的
ORDER
BY
子句
外,这条语句与前面的语句相同。
MYSQL——HAVING
子句
与
ORDER
BY
子句
文章目录HAVING
子句
HAVING
子句
基本语法HAVING
子句
的构成要素写在HAVING
子句
与WHERE
子句
的条件
ORDER
BY
子句
基本语法指定升序或降序多个
排序
键NULL的顺序在
排序
键中使用别名
order
by
子句
中可以使用的列使用列编号进行
排序
HAVING
子句
摘要: 1.使用count等函数对表中数据进行聚合操作时,为其指定条件的不是where
子句
,而需要使用having
子句
2.聚合...
SQL语句之
ORDER
BY
子句
在SQL中可以使用
ORDER
BY
子句
对查询的结果进行
排序
。 例:现在使用查询全部的语句查询表EMP中的所有内容。 l
SELECT
* FROM emp ; 输出如下: 此时,从查询结果可以发现,是按照雇员的编号进行
排序
的,那么此时如果
SQL
ORDER
BY
子句
【
排序
】升降序
ORDER
BY 语句一般是对指定的列进行
排序
,默认按照升序对记录进行
排序
。 如果想要降序利用DESC关键字对记录进行降序。 1.以字母顺序显示公司名称
SELECT
Company,
Order
Number FROM
Order
s
ORDER
BY Company 实例 2 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(
Order
Number): S...
MS-SQL Server
34,876
社区成员
254,635
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章