sql自定义排序
⑴ sql语句中,选择结果如何按指定顺序排序
可以这样实现题主所要求的排序
select * from A_TABLE1 where
name in(‘张三’,‘李四’,‘王五’)
order by (case name when '张三' then 1
when '李四' then 2 else 3 end);
⑵ MySql的几种排序方式
1、单列排序
SELECT * FROM test1 ORDER BY date_time
默认升序,降序后面接"DESC"即可。
2、多列排序
SELECT * FROM test1 ORDER BY `status`, date_time DESC
首先按`status`字段排序,若`status`相等,则按data_time排序。
3、自定义排序
SELECT * FROM test1 ORDER BY FIELD(`status`, 3, 2, 4, 1, 5), date_time DESC
使用"FIELD()"函数,可指定顺序。
4、其他条件排序
先按大于等于当前时间升序,再按小于当前时间降序,支持分页。
SELECT * FROM test1 ORDER BY date_time < NOW(), IF(date_time < NOW(), 0, date_time), date_time DESC
附加SQL脚本:
CREATETABLE`test1`(
`id`bigint(20)NOTNULLAUTO_INCREMENT,
`name`varchar(50)NOTNULL,
`date_time`datetimeNOTNULL,
`status`int(5)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8
INSERTINTO`test1`VALUES
(NULL,'测试1','2018-03-0511:09:00',1),(NULL,'测试2','2018-03-0611:09:00',1),(NULL,'abc','2018-03-0711:09:00',1),
(NULL,'def','2018-04-0811:09:00',2),(NULL,'李某某','2018-04-1711:09:00',1),(NULL,'饭某某','2018-04-2013:09:00',2),
(NULL,'赵','2018-04-2001:09:00',4),(NULL,'倩','2018-04-2811:09:00',2),(NULL,'andy','2018-04-3011:09:00',1),
(NULL,'tony','2018-05-0811:09:00',4),(NULL,'tom','2018-05-0711:09:00',3),(NULL,'bill','2018-05-1811:09:00',3),
(NULL,'james','2018-06-0711:09:00',4),(NULL,'anthony','2018-06-1811:09:00',2),(NULL,'盖茨','2018-04-2111:09:00',1),
(NULL,'部长','2018-04-2411:09:00',4),(NULL,'李总','2018-04-2011:09:00',5),(NULL,'张总','2018-04-2911:09:00',2),
(NULL,'王总','2018-04-1911:09:00',3),(NULL,'唐总','2018-05-0111:09:00',2);
参考的这篇文档Mysql排序方式
⑶ sql server 2008中怎么自定义列排序呢
查询时输入
selectuser,sex,agefromuser
就行,完全无影响的
⑷ 用SQL语句怎样排序
这个可以根据地区编码降序排列
代码如下:
select * from 表名
order by 地区编码 desc
中文属性列名不记得要不要加上引号 你试下看看
⑸ 易语言SQL查询自定义排序
withtas(
select'1'工号,'销售'职位,'张三'姓名fromalunionall
select'2'工号,'仓管'职位,'李四'姓名fromalunionall
select'3'工号,'人事'职位,'王五'姓名fromalunionall
select'4'工号,'人事'职位,'赵六'姓名fromalunionall
select'5'工号,'销售'职位,'马奇'姓名fromal
)
select*fromtorderbydecode(职位,'销售',1,'人事',2,3),工号;
如上答案纯手工码字没有参与审核测试!@
⑹ sql 添加自定义排序
sql 添加自定义排序
Mysql :
SELECT (@i:=@i+1) AS ind ,字段 FROM 表名 别名, (SELECT @i:=0) t WHERE `IsDeleted` = 0;
Oracle:
本就有rownum。可直接用:SELECT rownum,字段 FROM 表名;
SqlServer:
SELECTROW_NUMBER()OVER(ORDERBYID) ROWNU,字段FROM表名;
给表中所有数据重新排序
SELECT(SELECTCOUNT(`Id`)FROM表名 别名1WHERE别名1.`IsDeleted`=0AND别名1.`Id`<=别名2.`Id`)ASseq ,别名2.*FROM表名别名2WHERE别名2.`IsDeleted`=0AND别名2.`WLTId`=3;
⑺ sql 综合查询后自定义排序
sum(pkq)和Sum(pusermoney2)最好指定别名,不知道你的“很多”是指什么?一个字段?
按下面的改一下试试吧 order by 后面的排序字段名自己加上
Select * from
(
select replace(pworktype,'-干部','干部') as pwork1,sum(pkq) ,很多, Sum(pusermoney2)
from money_main where sid='第八项目部2015年6月职工工资支付明细表' and pht='返聘' and pworktype not like '%干部%'
group by pht
UNION
select pwork1,sum(pkq),很多, Sum(pusermoney2)
from money_main where sid='第八项目部2015年6月职工工资支付明细表' and pht<>'外来工' and pht<>'返聘' and pworktype not like '%干部%'
group by pwork1
) as a order by ........
⑻ sql order by 怎么自定义排序
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序ASC。如果要降序,必须书写DESC关键字
比如一个ZZZ表里的XXX列需要降序,语句如下
select * from ZZZ order by XXX desc
⑼ sql的order by可以自定义排序函数吗
可以的。order by 后面跟着的字段名,而且现在的瓶颈基本是在sql上,所以尽量不要在sql里执行计算函数之类。因为运算和执行函数会消耗资源,使得sql执行变慢。函数之类的能在程序里执行尽量在程序里执行,现在cpu的瓶颈还很远。
⑽ sql 按字段指定值排序
sql语句的排序,有止是 asc,desc 简单的正序、倒序排列,还可以根据需要字段的值,来执行排序。可使用如下方式:
1.点击新建查询:
2.输入如下语句:
orderby
case`A1`
when a2then1//当值为a2,排在第一个
whena3 then2//当值为a3,排在第二个
whena1 then3//当值为a1,排在第三个
end
asc//按上面顺序,正序排列(也可为desc)
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果希望按照降序对记录进行排序,可以使用 DESC 关键字。
拓展资料:
sql常见语句
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]