‘壹’ 若sql语句中order by指定了多个字段,则怎么排序
order by id desc,time desc
先是按 id 降序排列 (优先)
如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)
order by name, age desc
name优先
name一样的话,就按age排序。
后面再加第三列的话,也是一样 以此类推下去。
(1)sql多个字段排序扩展阅读:
mySql order by 几种排序的写法
1、单列升序:select<column_name> from <table_name> order by <column_name>; (默认升序,即使不写ASC)
2、单列降序:select <column_name> from <table_name> order by <column_name> desc;
3、多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>;
4、多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc;
5、多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;
‘贰’ sql 同一行多字段 排序
只能用存储过程或者一路Case比大小.这里用过程:假设你表名是"t"
create proc proc_sortCol
as
begin
--临时表
create table #t(
idx int primary key identity (1,1),
id int,
hv varchar(50),
col int)
--列转行并排序
insert into #t
select id,hv,col from
(select id,h1 hv,''col from t --改表名在这几行
union select id,h2,'' from t
union select id,h3,'' from t
union select id,h4,'' from t
union select id,h5,'' from t
)k order by id,hv
--计算对应列
update #t set col= idx-(5*(id-1))
--行转列
select id,
max(case col when 1 then hv else '0' end) as h1,
max(case col when 2 then hv else '0' end) as h2,
max(case col when 3 then hv else '0' end) as h3,
max(case col when 4 then hv else '0' end) as h4,
max(case col when 5 then hv else '0' end) as h5
from #t
group by id
--删除临时表
drop table #t
end
------------
--执行:
exec proc_sortCol
‘叁’ SQL中多条件排序问题
第一步:确定输出内容,你要的字段为name,数据结果为b,d,a,c ;
第二步:找规律,b、d的online为1;a、c的位说明是按online 降序;然后来看下 b 、d的online相同,viewnum为30和10,那么就是viewnum降序;如果a、c的viewnum也是降序那么规律就找到了,发现 a为40、c为20,确实是降序,满足条件。
第三步:总结规律就是先按online降序排序,之后再按viewnum降序排序。
第四步:得出需要的sql。
,viewnumdesc;
‘肆’ SQL 一条数据多个字段排序...
一般的表不会那么多字段代表的东西属性都相同吧??怎么还有这样的表?
一般就这样
select
*
from
table
order
by
a
desc,b
desc,c
desc
‘伍’ sql多字段排序问题
SQL> select * from test order by a+b+c,a,b,c;
A B C
-- -- --
0 0 1
0 1 0
1 0 0
0 1 1
1 0 1
1 1 0
6 rows selected.
SQL> select * from test;
A B C
-- -- --
0 1 0
1 0 0
0 1 1
1 0 1
1 1 0
0 0 1
6 rows selected.
SQL>
‘陆’ 如何对sql检索出的数据进行多列排序
SQL多列排序可以在ORDER BY 子句里列出多个列进行排序,列与列之间用逗号隔离,标注关键字ASC为升序排序、DESC为降序排序,省略升/降排序关键字则默认为升序排序。排序字段列表中越靠前的字段其排序优先级别越高。请注意对SQL语句除了对列实施排序外,还可以对基于列的计算表达式实施排序。
请参考下列SQL多列排序语句:
select * from t1 order by col1,col5 desc,col3;
此例以col1第一优先升序排序,col5第二优先降序排序,col3第三优先升序排序。
‘柒’ sql多条件多字段排序(图文教程)
语句:
复制代码
代码如下:
select
*
from
[User]
order
by
[Password]
desc,Id
asc
在一个条件重复的情况下,使用第二个条件排序
如下:
注意这里的第
14,15条记录
(在Password相同的情况下,根据Id排序)
语句:
复制代码
代码如下:
select
top(5)
*
from
(select
top(5)*
from
[User]
order
by
Id
desc
)
x
order
by
[Password]
asc
在已经查询出来(已排序)的数据中排序
(也就是挑选
Id排序前五条记录
再将五条记录
根据Password排序)
复制代码
代码如下:
select
top(5)*
from
[User]
order
by
Id
desc
如下
复制代码
代码如下:
select
top(5)
*
from
(select
top(5)*
from
[User]
order
by
Id
desc
)
x
order
by
[Password]
asc
如下:
今天做个通讯录,因为客户要求复杂,唉。……
要多我条件排序,在网上查找了一些资料,成功
,特记下
复制代码
代码如下:
select
*
from
Reply
where
Replyid="&request("Replyid")&"
order
by
排序字段1
desc,排序字段2
desc,排序字段3
desc
‘捌’ sql可以根据多个字段排序么是不是只有排在最前面的起作用
可多字段排序,当多字段排序时,首先排序第一个字段,当第一个字段值相同时,才按第二个字段排序,如果第二个字段值相同,才按第三个排序...
‘玖’ sql语句中的多个字段进行排序,规范该怎么写,请高手指点
select * from 表名 order by 排序字段1, 排序字段2;
‘拾’ sql 语句如何按两个字段的计算结果排序
1、a和b都不为空值或null值,分母也无0值
select a/b as c,a,b from table order by a/b
2、a或b其中一个为null值是,将null值转换为1且分母也无0值:
select isnull(a,1)/isnull(b,1) as c,a,b from table order by isnull(a,1)/isnull(b,1)
3、a或b其中一个为null值是,将null值变为非null值的那一列的值且分母也无0值:
select NULLIF(COALESCE(a,b), 0.00)/NULLIF(COALESCE(b,a), 0.00) as c,a,b from table order by NULLIF(COALESCE(a,b), 0.00)/NULLIF(COALESCE(b,a), 0.00) as c
4、a和b不为空也不为null 但是分母为0时:
select round(a/nullif(b,0),2) as c,a,b from table order by round(a/nullif(b,0),2) as c