❶ 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`)
❷ SQL如何按两个字段排序,一个按倒序一个按升序
1、首先双击一个表,如下图所示。
❸ sql按两字段排序
这个需要在排序语句中使用条件判断
例如:表【table_temp】中列【col1】为字符,属性为varchar(10),排序时需要按照b、a、c的顺序显示,则可按照以下sql语句:
select
*
from
table_temp
order by
case
when col1='b' then 1
when col1='a' then 2
when col1='c' then 3
end
❹ 若sql语句中order by指定了多个字段,则怎么排序
order by id desc,time desc
先是按 id 降序排列 (优先)
如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)
order by name, age desc
name优先
name一样的话,就按age排序。
后面再加第三列的话,也是一样 以此类推下去。
(4)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语句中,如何按指定字段排序
对于这种排序的问题处理,如果不是简单中英文排序,最好价格排序列,sortNum,起到排序的效果,复杂点如每个人有个自己的排序规则,可写个映射表存储每个人的排序规则,进行排序
❻ sql语句中对一个字段排序,字段中含有字符串和数字,(怎根据数字进行排序)
order by 字段名称+0 desc/asc的形式进行排序
order by 字段名称*1 desc/asc的形式进行排序
❼ SQL 如何根据两个字段排序
1、首先建一张测试表coal_blead,里面有多个字段
❽ sql排序方式要根据另一个表的某个字段排序怎么实现
可以通过两个表的关系,然后通过字段关联的形式排序。
sql:select
t1.*
from
tablename1
t1,
tablename2
t2
wehere
t1.id=t2.id
order
by
t2.name;
解释:实际上上面语句会通过
tablename2表的name字段先排序表tablename2数据,之后会通过id字段关联后,读取出id存在于tablename2表中存在的tablename1表的数据。
备注:上面表中的id字段的值肯定有相同的,如tablename1和
tablename2
表中id字段都存在值“1”,才可以有结果输出。如果两个表都没关联的话,无法实现。
❾ sql按某个字段值顺序排序
升序:select * from 表名 order by 表中的字段 asc(MySQL中默认是升序排列,可不写) ;
降序:select * from 表名 order by 表中的字段 desc ;
❿ sql怎么根据字段长度和大小排序
可以参考下面的代码:
select * from 表 order by len(字段);长度,由短到长
select * from 表 order by len(字段)desc;长度,由长到短
select * from 表 order by 字段;大小,由小到大
select * from 表 order by 字段 desc;大小,由大到小
(10)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