A. sql字符型字段按数字型字段排序实现方法
这是很久之前的就遇到的问题了,去年写了个WP插件:WordPress投票插件Ludou
Simple
Vote,由于有些使用者需要一个投票排行榜,所以需要用一条SQL来读取按得分排序的文章列表。
Ludou
Simple
Vote的投票得分结果是以自定义栏目的方式存储在WordPress的postmeta中,分值存放在meta_value字段,而meta_value字段类型是longtext,如果直接使用下面的SQL查询语句来排序:
复制代码
代码如下:
ORDER
BY
`meta_value`
那么按得分排序得到的结果可能是:
1
10
11
123
1234
2
25
253
3
由于是按字母顺序排列,所以123排在了2的前面,显然不符合我们的要求,那么怎样才能按照我们预想的数字顺序排序呢?下面介绍两种方法。
一、采用MySQL的cast函数,转换字段格式
这里我们将meta_value字段转换成数值类型的字段DECIMAL,然后再进行排序:
复制代码
代码如下:
ORDER
BY
CAST(`meta_value`
AS
DECIMAL)
需要注意的是,你所要排序的meta_value字段的值必须都是可转换成数字,否则将会出错。
二、使用MySQL绝对值函数ABS
使用MySQL绝对值函数ABS,它告诉MySQL使用绝对值来处理处理这个字段:
复制代码
代码如下:ORDER
BY
ABS(`meta_value`)
B. SQL如何写个函数将字符串按单字符进行排序
看到你这个需求,我的第一反应就是函数要递归,如果你这个字符串长度很长,再递归的时候数据库就呵呵了, 在这里很想问一句,数据库主要职责还是存储数据,你这个字符串排序完全可以在后台程序中处理干嘛非要使用数据库函数呢? 这就一点类似加密解密了,这些全都应该是后台程序完成的呀.
C. SQL如何最快实现排序
你好,很高兴回答你的问题。
具体提供一下表结构以及索引和要执行的sql语句。
D. 用SQL语句怎样排序
这个可以根据地区编码降序排列
代码如下:
select * from 表名
order by 地区编码 desc
中文属性列名不记得要不要加上引号 你试下看看
E. 请教:能否在SQL语句里自定义排序
对数据行进行各种形式的排序是SQL语言的强项,我们完全可以根据不同的需求使用“ORDER BY”子句进行自定义排序的。
具体的排序定义由参与排序的字段或基于字段值的计算表达式(通常是使用各种函数)或特意添加的排序用行"常量"标记、各个排序字段的先后顺序以及是ASC(升序)还是DESC(降序)所确定。对于特别复杂的排序需求我们还可以借用存储过程、游标等手段以实现常规排序难于实现的排序需求。
F. sql中的排序,如何使用倒序
sql中排序倒序使用desc关键字,一般需要和order by 合用,示例sql语句如下:
例如:select * from student order by age desc;
意思是查询学生表,以学生年纪倒序排列。
排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序(asc),如果存在 where 子句,那么 order by 必须放到where 语句后面。
例如:select ename,job,ename from emp order by job desc,sal desc;
意思是查询员工表按照 job 和薪水倒序排序 。
(6)sql函数实现排序扩展阅读
sql中升序(正序)用法介绍:
1、使用asc关键字
例如:select ename,sal from emp order by sal asc;
手动指定按照薪水由小到大排序(升序关键字 asc)
2、不加asc关键字,系统默认升序
例如:select ename,job,sal from emp where job = ”MANAGER”order by sal;
取得job 为 MANAGER 的员工,按照薪水由小到大排序(系统默
认由小到大)
G. sql怎么根据字段长度和大小排序
可以参考下面的代码:
select * from 表 order by len(字段);长度,由短到长
select * from 表 order by len(字段)desc;长度,由长到短
select * from 表 order by 字段;大小,由小到大
select * from 表 order by 字段 desc;大小,由大到小
(7)sql函数实现排序扩展阅读:
sql参考语句
更新:update table1 set field1=value1 where 范围
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
H. 如何用SQL进行排序
您到底是什么意思?是要生成序号?
是不是这样:
SELECT BMMC,序号=
replace(
replace(
replace(
replace(
REPLACE(BMMC,'部门',''),
'a','00'),'b','01'),'c','02')
这是生成部门编号,与部门名称中的字母顺序一致。
如果字母只是ABC这几个,这样就可以了,不需要存储过程。
I. 如何写sql代码进行排序
select *
from (
select *,(case when delete_type='NONE' then 0 else 1 end) as flag
from table_name
) t
order by flag asc, pv asc
--order by flag desc,PV desc
J. sql的函数,排序和分组的sql语句,最简单的就OK,还有子查询
排序:select * from A order by id (默认升序 如果是降序的话就是 order by id desc)
分组:select id from A group by id
(子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。)
简单的如:select id from A where id in(select id from B )
都是很简单的例子