sql 按字段指定值排序

比如数据库表table1中有为A1的字段名,A1中的值只有如下几种情况:a1,a2,a3,现需按a2,a3,a1的顺序排序,显示数据行,请问有没有直接操作的SQL语句,请大侠指教,十分感谢!
数据库为Access

sql语句的排序,有止是 asc,desc 简单的正序、倒序排列,还可以根据需要字段的值,来执行排序。可使用如下方式:

1.点击新建查询:

2.输入如下语句:

    order by   

    case `A1`   

    when a2 then 1       // 当值为a2,排在第一个  

    when a3 then 2       // 当值为a3,排在第二个  

    when a1 then 3       // 当值为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]

参考资料: 

百度百科  SQL ORDER BY

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-02

这个需要在排序语句中使用条件判断

例如:表【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

第2个回答  2008-08-01
在MSSQL支持CASE,使用以下语句实现
SELECT 表1.id, 表1.n
FROM 表1
ORDER BY CASE n WHEN 'a2' THEN 1 WHEN 'a1' THEN 2 WHEN 'a3' THEN 3 END;

在Access中使用IIF来实现,如下:
SELECT 表1.id, 表1.n
FROM 表1
ORDER BY IIF(n='a2',1,IIF(n='a3',2,3));

可参考Access帮助文件中的
Access > 筛选和排序 > 按自定义次序对记录排序本回答被提问者采纳
第3个回答  2008-08-01
在select语句后面加上 order by A1 desc是降序
order by A1 asc是升序;
第4个回答  2008-08-01
order by 字句中使用case

select *
from table1
order by case A1 when 'a2' then 1 when 'a3' then 2 when 'a1' then 3 end

sql 按字段指定值排序
sql语句的排序,有止是 asc,desc 简单的正序、倒序排列,还可以根据需要字段的值,来执行排序。可使用如下方式:1.点击新建查询:2.输入如下语句:order by case `A1`when a2 then 1 \/\/ 当值为a2,排在第一个 when a3 then 2 \/\/ 当值为a3,排在第二个 when a1 then 3 \/\/ 当...

SQL中怎么根据字段值选择排序方法,求指点
1、升序 select * from 表名 order by 列名 2、降序 select * from 表名 order by 列名 desc 3、按需排序 select * from 表名 order by case when 列名='ZZ' then 1 when 列名='YY' then 2 else 列名 end

sql语句中对一个字段排序,字段中含有字符串和数字,(怎根据数字进行排序...
order by 字段名称*1 desc\/asc的形式进行排序

sql语句查询按指定字段排序,数据的顺序会变。哪些数据库会产生这种情...
查询时候,如果是按照索引排序的话,由于你设置了order强制使用一个顺序,而后台调用数据填充的时候,是按照索引顺序来填充的话,就会出现顺序变化的情况。

mysql根据某个字段内容排序
SELECT * FROM yourtable ORDER BY a ASC , b DESC这个就是你想要的 yourtable你的表名 a,b为你的字段名

SQL数据库如何按照表内某列int值的大小进行排序求指教!
“顺序”体现在对表的“查询”动作中。换句话说,就是你的order by才告诉引擎,查询到的若干条目应该以什么样的顺序排列。这是一个很科学也很重要的概念。因为在实际使用中,你可能今天想按某个时间字段排序,明天想按某个索引号排序,但这些所谓的“顺序”都是你想要看到的数据的一种投影方式,而并...

使用sql语句怎样对一个字段按指定的顺序排序啊?
因为你字段的内容是普通和精华,所以楼上给的排序并不能解决你的问题,除非你改变下paixu字段的数据类型,如果改成int类型的话,就可以存放当精华帖子的时候就存1,普通的时候存0 建议你修改字段类型

sql 中排序先按某字段升序,后按某字段降序。
ertintotest_order2值(1,'zhangSAN,10,1,1);ertintotest_order2values(2,'lisi,2031);ertintotest_order2值(3,'晓明,50);3、查询表记录,选择t。*,rowidfromtest_order2t;4.编写SQL找到字母“a”的位置在表中的每条记录;也就是说,第一个以升序排序的位置,然后按照...

sql语句,按一个字段中的值当作结果列,列出表数据,如图
select year , 0 m1,count(1) m2,0 m3, 0 m4 from tab where month='2' group by year union all select year , 0 m1,0 m2,count(1) m3, 0 m4 from tab where month='3' group by year union all select year , 0 m1,0 m2,0 m3, count(1) m4 from tab where month='4'...

若sql语句中order by指定了多个字段,则怎么排序?
order by id desc,time desc 先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)order by name, age desc name优先 name一样的话,就按age排序。后面再加第三列的话,也是一样 以此类推下去。

相似回答