1. ACCESS数据库分类查询后结果为什么是排序的
一种情况是该分类查询使用了 order by 排序子句强制实施了排序;
另一种情况是该分类查询并没用强制排序,但是实际输出结果看起来还是排序了。导致这种现象出现的原因是比较复杂的,它是由源表的数据结构(如字段类型、索引等)、SQL语句的写法和数据库引擎执行SQL语句的内部算法综合作用导致的。
下面举个简单的情况说明一下,例如:
select 商品分类,count(*) as 分类数量 from 商品表 group by 商品分类;
这条语句即使不强制排序,实际输出结果也会按商品分类排序输出,因为数据库引擎在后台计算每个分类的数量实际是首先要将各条商品记录按商品分类排序后再来按顺序数人头的(每个分类的数量),这样计算结果出来后附带的排序效果也自然有了,如果数据库引擎再将它打乱输出反而需要在此基础上额外增加系统开销。
需要指出的是SQL选择查询执行后自然形成的排序效果在很多情况下是很难预料的(除非您是基础数据库开发工程师),因此我们应该根据实际需求决定是否人为对输出结果强制排序。
2. 数据库查询时怎么按照多个字段进行排序
sql
使用order
by
排序
select
*
from
table
order
by
value1,value2
根据字段value1和value2排序默认是升序
select
*
from
table
order
by
value1,value2
desc
按照降序排序
3. 数据库树形结构数据的查询结果排序问题
不知道你的数据库是什么,如果是oracle的话,你用start with connect by试试。我不太确定能不能直接出来你要的效果。如果出不来,那么用start with connect by+union all+条件判断(分别写每一个level=1的情况)应该可以,不过如果level=1有很多个,那么就麻烦了。
还有一种办法是利用字符串排序。比如1-1-1-2,1-2-1-2,1-1-1-3,那么排完序之后应该是1-1-1-2,1-1-1-3,1-2-1-2.至于这个参数的出来方法就要去凑了。因为我担心还有例如1-1-1-2-1这样的,如果存在这样的,那么按照你的要求排序应该是
1-1-1-2,1-1-1-2-1,1-1-1-3,1-2-1-2,可是如果按照数字排序那么1-1-1-2-1肯定在最后,所以用字符排序可能才能达到你的要求。(还是用start with connect by)
比如这里最后的编码为
Level层数 父件代号 子件代号 子件顺序 编码
1 root C 1 1-1
1 root D 2 2-1
1 root F 3 3-1
2 C A 1 1-1-2-1
2 C B 2 1-1-2-2
2 D E 1 2-1-2-1
我这里没有环境,没办法测试,所有的内容均为猜想,仅供参考。
4. 数据库排序语句
数据库的排序用order by语句实现。
工具:sqlserver 2008R2
步骤:
1、有如下学生表: