社区
MS-SQL Server
帖子详情
问一下,在select的时候如果没有加order by子句,那么结果是按照什么来排序的
defender
2003-05-09 10:34:40
请考虑一下牵扯到多表复合查询的情况
...全文
279
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)
初级学软件之ASP.NET 第九季 LINQ技术
主讲内容:第一讲 LINQ技术概述第二讲 from
子句
第三讲 where
子句
第四讲
select
子句
第五讲
order
by
子句
第六讲 建立LINQ数据源第七讲 查询数据库中的数据第八讲 向数据库中添
加
数据第九讲 修改数据库中的数据第十讲 删除数据库中的数据
SQL学习笔记——
order
by
子句
、desc降序
排序
--
order
by
子句
语法
select
<列名1>, <列名2>, <列名3>, …… from <表名>
order
by <
排序
基准列1>, <
排序
基准列2>, …… 1、不论何种情况,
order
by
子句
都需要写在
select
语句的末尾,
order
by
子句
中书写的列名称为
排序
键 2、
子句
的书写顺序:1.
select
子句
→ 2. from
子句
→ 3. where
子句
→ 4. group by
子句
→5. .
MySQL使用
SELECT
语句不
加
ORDER
BY默认是如何
排序
的?
大家好,我是阿飞云怕什么真理无穷,进一步有近一步的欢喜记录一个MySQL查询
排序
的
问
题,一个SQL语句
没有
加
order
by,那么查询出来的结果到底是按照什么规则
排序
的呢?查询了网上的一些资料,分享如下:•MyISAM 表MySQL
Select
默认
排序
是按照物理存储顺序显示的(不进行额外
排序
)。也就是说
SELECT
* FROM tbl – 会产生“表扫描”。如果表没...
《SQL必知必会》第三课
排序
检索数据
SELECT
语句的
ORDER
BY
子句
第三课
排序
检索数据
SELECT
语句的
ORDER
BY
子句
#
ORDER
BY
子句
应是
SELECT
语句的最后一条
子句
【1】
SELECT
prod_name FROM products; #将数据以底层表出现的顺序显示 【2】
SELECT
prod_name FROM products
ORDER
BY prod_name; #对prod_name列以字母升序顺序
排序
数据 【3】SELEC...
SQL 检索
排序
数据(
ORDER
BY
子句
)
ORDER
BY
子句
用于对结果集按照一个列或者多个列进行
排序
。
ORDER
BY
子句
默认按照升序对记录进行
排序
。如果需要按照降序对记录进行
排序
,您可以使用 DESC 关键字。 注意:
ORDER
BY
子句
应该位于FROM
子句
之后,若使用LIMIT关键字时,LIMIT关键字必须要位于
ORDER
BY
子句
之后。 升序
排序
升序
排序
(从小到大)为
ORDER
BY 默认
排序
方式,也可以在SQL...
MS-SQL Server
34,576
社区成员
254,587
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章