首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL ORDER BY -如何在WHEN子句中遵守与list相同的顺序

在SQL中,ORDER BY子句用于对查询结果进行排序。它可以根据一个或多个列的值来排序结果集。当我们想要按照特定的顺序来排序结果时,可以使用WHEN子句来实现。

WHEN子句是SQL中CASE语句的一部分,用于定义条件并执行相应的操作。它通常与ORDER BY子句结合使用,以根据满足特定条件的列值来排序结果。

例如,假设我们有一个表格存储了学生的成绩信息,包括学生姓名、科目和成绩。我们想要按照以下顺序来排序查询结果:数学、英语、物理、化学、历史、地理。可以使用以下SQL查询语句:

代码语言:txt
复制
SELECT * FROM scores
ORDER BY
  CASE subject
    WHEN '数学' THEN 1
    WHEN '英语' THEN 2
    WHEN '物理' THEN 3
    WHEN '化学' THEN 4
    WHEN '历史' THEN 5
    WHEN '地理' THEN 6
    ELSE 7
  END;

上述查询会根据subject列的值进行条件判断,并按照定义的顺序进行排序。当subject的值为数学时,它会被标记为1,在排序过程中会优先排在前面;英语为2,物理为3,以此类推。如果subject的值不在我们定义的顺序中,它会被标记为7,并排在最后。

注意,这里的优势是我们可以根据需要自定义顺序,而不仅仅依靠默认的升序或降序排序。这对于特定场景下的数据分析和报表生成非常有用。

腾讯云提供了多个与数据库相关的产品和服务,其中包括云数据库 MySQL、云数据库 MariaDB、云数据库 PostgreSQL 等。您可以根据具体需求选择适合的产品,详情可以参考腾讯云数据库产品介绍页面:https://cloud.tencent.com/product/cdb

希望以上信息能对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL优化快速入门

%like语句中,可以通过like 'c%'使用索引 order by语句,任何在order by语句非索引项或者有计算表达式都将降低查询速度。...选择最优效率表名顺序(Oracle解析器按照从右到左顺序处理FROM子句中表名),比如select count(*) from tab1 inner join tab2,这是优先检索表2,并将表2...数据表1合并。...在SQL SERVER中,查看执行计划,发现并没有区别 减少查询次数(包括对表查询),将多个分离查询合并 能够在WHERE字句中使用条件,尽量避免放在HAVING字句中 用...用>=代替> 注意隐式转换 UNION-ALL替换UNION 在严格遵守条件情况下(所有的列必须包含在相同索引中并保持在索引中排列顺序,所有的列必须定义为非空),

1.4K90

SQL基础查询方法

尽管查询使用多种方式用户交互,但它们都完成相同任务:它们为用户提供 SELECT 语句结果集。...即使用户从不指定 SELECT 语句,使用图形化工具( Visual Studio Query Designer)所经常遇到情况一样,客户端软件可将每个用户查询转换成发送到 SQL Server...SELECT 语句从 SQL Server 中检索出数据,然后以一个或多个结果集形式将其返回给用户。结果集是对来自 SELECT 语句数据表格排列。 SQL相同,结果集由行和列组成。...ORDER BY order_list[ ASC | DESC ] ORDER BY 子句定义了结果集中行排序顺序order_list 指定组成排序列表结果集列。...如果结果集行顺序对于 SELECT 语句来说很重要,那么在该语句中就必须使用 ORDER BY 子句。

4.3K10
  • T-SQL基础(一)之简单查询

    :LIKE '%x' 运算符 SQL运算符高级编程语言(C#,JAVA)类似。当多个运算符出现在同一表达式中时,SQL Server会按照运算符优先级进行计算。...几条建议: SQL关键字均使用大写字母 SQL语句均使用分号结尾 SQL中使用对象完全限定名,:DbName.dbo.TableName 查询语句执行顺序 SQL中查询语句逻辑处理过程实际查询过程...(物理查询过程)是有差异,即,SELECT语句执行顺序书写顺序是有差异。...(虽然看起来结果集像按照某种顺序排列),除非显式使用ORDER BY子句指定顺寻,但使用ORDER BY字句后结果集将被作为游标对待,而非表结果。...,WHERE子句中多个表达式计算并没有确定顺序。 CASE...WHEN... CASE表达式是标量表达式,返回一个符合条件值。注意,CASE是表达式,不是语句,COUNT类似。

    4.2K20

    T-SQL进阶:超越基础 Level 2:编写查询

    进阶系列,其涵盖了更多高级方面的T-SQL语言,查询。...清单7中查询显示了我如何在FROM子句中使用查询。 当在FROM子句中使用查询时,从子查询生成结果集通常称为派生表。...通过在FROM子句中使用查询,您可以轻松地构建更复杂FROM语法,该语法将查询结果与其他表或其他查询相结合,清单8所示。...清单10中代码显示了如何在INSERT语句中使用查询。...当查询用于FROM子句时 当IN子句中使用查询时 当表达式中使用查询时 当查询比较运算符一起使用时 问题3: 在WHERE子句中使用一个查询Transact-SQL语句总是比不包含查询(

    6K10

    客快物流大数据项目(九十七):ClickHouseSQL语法

    可以使用包含在括号里查询来替代表,在这种情况下,查询处理将会构建在外部查询内。不同于SQL标准,查询后无需指定别名。...执行查询时,在查询中列出所有列都将从对应表中提取数据;如果你使用查询方式,则任何在外部查询中没有使用列,查询将从查询中忽略它们;如果你查询没有列出任何列(SELECT count(...这与SQL标准JOIN行为相同。在使用ANY修饰符对JOIN进行修饰时,如果右表中存在多个左表关联数据,那么系统仅返回第一个左表匹配结果。...当执行JOIN查询时,因为与其他阶段相比没有进行执行顺序优化:JOIN优先于WHERE聚合执行。因此,为了显示指定执行顺序,建议使用查询方式执行JOIN。...如果没有指定ORDER BY子句,则结果顺序是不确定

    3.1K61

    mybatis常用标签,详细总结

    配置JAVA对象属性查询结果集中列名对应关系 resultMap 标签使用 基本作用: 建立SQL查询结果字段实体属性映射关系信息 查询结果集转换为java对象,方便进一步操作。...type: 返回值类名,此例中返回Studnet类 标签: id:用于设置主键字段领域模型属性映射关系,此处主键为ID,对应id。...MyBatis提供了choose 元素,按顺序判断when条件出否成立,如果有一个成立,则choose结束。当choose中所有when条件都不满则时,则执行 otherwise中sql。...类似于Java switch 语句,choose为switch,when为case,otherwise则为default。 if是(and)关系,而choose是或(or)关系。...定义常量及引用 6.1 sql标签 当多种类型查询语句查询字段或者查询条件相同时,可以将其定义为常量,方便调用。为求结构清晰也可将sql语句分解。 <!

    2K30

    PostgreSQL基础知识整理

    但要确保表中是在相同顺序列值顺序。...UNION ALL运算符语句,则包括重复行结果。使用UNION,每个SELECT选择列数必须具有相同相同数目的列表达式相同数据类型,并让它们在相同顺序,但它们不必是相同长度。...可以使用查询有SELECT,INSERT,UPDATE和DELETE语句,运算符=,,>=,<=,IN等一起使用。有几个子查询必须遵循规则: 必须用括号括起来查询。...查询只能有一个在SELECT子句中列,除非多列在主查询查询来比较其选定列。 ORDER BY不能使用在查询中,虽然主查询就可以使用ORDER BY。...GROUP BY可以用来执行相同功能在查询中ORDER BY。 查询返回多于一行只能用于使用多值运算符,为IN,EXISTS,IN,ANY / SOME,ALL运算符。

    3.5K10

    MySQL 5.6 5.7 组内排序区别

    name 值,返回则是取了 最早写入数据行 ,忽略了 order by no desc,按照数据逻辑存储顺序来返回 +----+----+-------+ | id | no | name | +...在标准 SQL 中,包含 GROUP BY 子句查询 不能引用 select 列表中未在 GROUP BY 子句中命名列。...如果启用了 ONLY_FULL_GROUP_BY SQL 模式(默认情况下),MySQL 将拒绝对列表,HAVING 条件或 ORDER BY 列表查询引用在 GROUP BY 子句中既未命名非集合列...你可以通过使用 ANY_VALUE() 使禁用了 ONLY_FULL_GROUP_BY SQL,来实现相同效果来引用非聚合列。...5.6 5.7 区别 5.6 升级到 5.7 版本要注意: sql_mode 默认值改变。 optimizer_switch 值改变。 备库升级影响主备复制。

    61620

    常用SQL语句和语法汇总

    来删除重复行 WHERE子句要紧跟在FROM子句之后 SQL语句注释分为单行注释和多行注释,单行注释书写在“—”之后,多行注释书写在“/”和“/”之间 SELECT 子句中可以使用常数或者表达式 字符串类型数据原则上按照字典顺序进行排列...子句中能够使用聚合函数,WHERE子句中不能使用聚合函数 HAVING子句要写在GROUP BY 子句后面 通常情况下,为了得到相同结果,将条件写在WHERE子句中要比写在HAVING子句中处理速度更快...ORDER BY子句通常写在SELECT语句末尾 排序键包含NULL时,会在开头或者末尾进行汇总 在ORDER BY子句中可以使用SELECT子句中定义别名 在ORDER BY子句中可以使用SELECT...子句未使用列和聚合函数 SQL语句书写顺序(重点!!!)...ELSE END SQL常用规则6 谓词就是返回值为真值函数 通常指定关联查询作为EXIST参数 作为EXIST参数查询中经常会使用SELECT * CASE表达式中END不能省略

    3.1K80

    那些年我们写过T-SQL(上篇)

    本系列包含上中下三篇,内容比较驳杂,望大家耐心阅读: 那些年我们写过T-SQL(上篇):上篇介绍查询基础,包括基本查询逻辑顺序、联接和查询 那些年我们写过T-SQL(中篇):中篇介绍表表达式、..., 筛选大于1个订单组 SELECT,返回每组成员ID、订单年度、订单数量 ORDER BY,按固原ID和订单顺序排序输出行 不知道这儿执行顺序和你心中是否相同,记得了解到这部分知识时,自己也花了很久去理解...接下来,补充说明一下以上六个字句中相关知识。 FROM字句:在From字句中对象中需要附加上schema架构限定,dbo.Sales, hr.Employee等。...其实,SQL SERVER能够识别查询中重复使用相同表达式,也就是说在一个查询,出现多次相同表达式,实际上只会运算一次,简直赞赞哒。...ORDER BY字句:按序输出行,需要理解是,在SQL中,表中没有确定顺序,表假定为一个集合,集合是没有顺序(这个观念如果是半路出家,需要很久才能真正理会到)。

    3.1K100

    如何写优雅SQL原生语句?

    sql各语句执行顺序概览讲解 项目实战中一段sql说明讲解 sql句中别名使用 书写sql语句注意事项 前言 上一篇讲Mysql基本架构时,以“sql查询语句在MySql架构中具体是怎么执行...知道了sql查询语句在MySql架构中具体执行流程,但是为了能够更好更快写出sql语句,我觉得非常有必要知道sql句中各子句执行顺序。...现在开始我们学习 语句中各子句完整执行顺序概括(按照顺序号执行) from (注:这里也包括from中语句) join on where group by(开始使用select中别名,后面的语句中都可以使用...看一下代码和执行结果与带有查询进行比较,不带子查询查询结果的确查到最大分数查询最大分数相同,但是根据id确认二者并不是同一条记录。...(*),前者在第一个匹配记录处返回,后者需要遍历所有匹配记录 Where子句中顺序需使用索引顺序保持一致,不是所有数据库优化器都能对此顺序进行优化,保持良好编程习惯(索引相关) 不要在where

    1.9K20

    SQL高级查询方法

    因为由 EXISTS 引入查询创建了存在测试并返回 TRUE 或 FALSE 而非数据,所以其规则标准选择列表规则相同。...UNION 结果集列名 UNION 运算符中第一个 SELECT 语句结果集中列名相同。另一个 SELECT 语句结果集列名将被忽略。...使用 UNION 运算符时需遵循下列准则: 在用 UNION 运算符组合句中,所有选择列表中表达式(列名称、算术表达式、聚合函数等)数目必须相同。...用 UNION 运算符组合各语句中对应结果集列顺序必须相同,因为 UNION 运算符按照各个查询中给定顺序一对一地比较各列。...若要用新名称引用结果集中某列(例如在 ORDER BY 子句中),必须按第一个 SELECT 语句中方式引用该列 SELECT city AS Cities FROM stores_west UNION

    5.7K20

    SQL查询数据库(一)

    SELECT子句执行顺序可以通过注意SELECT语句语义处理顺序SELECT语法顺序不同)来理解SELECT语句操作。...这种语义顺序表明,所有子句都可以识别表别名(在FROM子句中定义),而列别名(在SELECT选择项中定义)只能由ORDER BY子句识别。...可以使用字母大小写任意组合来引用列别名(例如,在ORDER BY子句中),并且InterSystems SQL解析为select-item字段中指定字母大小写。...查询生成结果集类还包含列别名属性。为避免字母大小写解析性能损失,在引用列别名时应使用在SELECT语句中指定列别名时使用字母大小写相同字母大小写。...选择项还可以是表达式,聚合函数,查询,用户定义函数(星号)或其他某个值。JOIN操作JOIN提供了一种将一个表中数据链接到另一个表中数据方法,并且经常用于定义报告和查询。

    2.3K20

    十步完全理解 SQL

    SQL 语句语法顺序是: SELECT[DISTINCT] FROM WHERE GROUP BY HAVING UNION ORDER BY 为了方便理解,上面并没有把所有的 SQL 语法结构都列出来...ORDER BY 关于 SQL 语句执行顺序,有三个值得我们注意地方: 1、 FROM 才是 SQL 语句执行第一步,并非 SELECT 。...请看下文中例子。 3、 无论在语法上还是在执行顺序上, UNION 总是排在在 ORDER BY 之前。...注意:并非所有的数据库对 SQL 语句使用相同解析方式。 MySQL、PostgreSQL和 SQLite 中就不会按照上面第二点中所说方式执行。 我们学到了什么?...思考问题时候从表角度来思考问题提,这样很容易理解数据如何在 SQL 语句“流水线”上进行了什么样变动。 4、灵活引用表能使 SQL 语句变得更强大 灵活引用表能使 SQL 语句变得更强大。

    1.6K90

    MySQL执行计划(explain)分析

    MySQL执行计划(explain)分析 EXPLAIN支持对SELECT、UPDATE、INSERT、REPLACE、DELETE分析 执行计划能知道: SQL如何使用索引 联接查询执行顺序 查询扫描数据行数...ID列: 表示执行SELECT语句顺序 ID相同时,执行顺序由上至下 ID越大优先级越高,越优先被执行 SELECTTYPE列: SIMPLE:不包含查询或是UNION操作查询 PRIMARY:...查询中包含任何查询,那么最外层查询则被标记为PRIMARY SUBQUERY:SELECT列表中查询 DEPENDENT SUBQUERY:依赖外部结果查询 UNION:UNION操作第二个或是之后查询值为...UNION DEPENDENT UNION:当UNION作为查询时,第二或是第二个后查询SELECTTYPE值 UNION RESULT:UNION产生结果集 DERIVED:出现在FROM子句中查询...如对主键或是唯一索引查询,效率最高联接方式 eqref: 唯一索引或主键查找,对于每个索引键,表中只有一条记录之匹配 ref:非唯一索引查找,返回匹配某个单独值所有行。

    95440

    SQL命令 SELECT(一)

    它用于在这些情况下支持使用ORDER BY子句,满足在查询或CREATE VIEW中使用查询中ORDER BY子句必须TOP子句配对要求。 TOP ALL不限制返回行数。...ORDER BY item-order-list - 可选—指定行显示顺序选择项或以逗号分隔项列表。 每个项目可以有一个可选ASC(升序)或DESC(降序)。 默认为升序。...对查询结果使用ORDER BY子句。 查询(例如UNION语句)中ORDER BY子句必须TOP子句配对。 如果没有指定ORDER BY子句,则返回记录顺序是不可预测。...将SELECT查询括在括号中会使它遵循查询语法规则; 具体来说,ORDER BY子句必须TOP子句配对。 对于查询,括号是必须。 一组括号是必须; 可以指定附加可选括号集。...这些谓词通常对group by子句指定每个组进行操作。 ORDER BY子句,指定显示行顺序查询或CREATE VIEW查询中ORDER BY子句必须TOP子句配对。

    5.3K10

    数据库性能优化之SQL语句优化

    但是用INSQL性能总是比较低,从Oracle执行步骤来分析用INSQL不用INSQL有以下区别: ORACLE试图将其转换成多个表连接,如果转换不成功则先执行IN里面的查询,再查询外层表记录...任何在where子句中使用is null或is not null语句优化器是不允许使用索引。 推荐方案:用其它相同功能操作运算代替,:a is not null 改为 a>0 或a>’’等。...Order by语句对要排序列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句非索引项或者有计算表达式都将降低查询速度。...更多方面SQL优化资料分享 (1) 选择最有效率表名顺序(只在基于规则优化器中有效): ORACLE 解析器按照从右到左顺序处理FROM子句中表名,FROM子句中写在最后表(基础表 driving...ORDER BY中所有的列必须包含在相同索引中并保持在索引中排列顺序. ORDER BY中所有的列必须定义为非空. WHERE子句使用索引和ORDER BY子句中所使用索引不能并列.

    5.6K20
    领券