当前位置:首页 » 编程语言 » sql多个字段排序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql多个字段排序

发布时间: 2022-01-30 11:58:19

‘壹’ 若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