0 0

怎样只用一条Select语句实现该规则下的排序?5

我现在要写一条查询的SQL语句,试了很长时间还是没写出来,现求各位帮忙了~

 

假设有如下表格t_context,其中type共有A、B、C种类型,优先级依次为B>A>C,现在要查询该表格中的所有数据,不过须按如下规则排序:

1、类型为B的排在第一,若有多条则按时间递减;

2、类型为A的排在第二,若有多条则按时间递减;

3、剩下的则按时间递减即可。

 

 

id type date context
1 C xxxx-xx-xx xx:xx:xx ...
2 C xxxx-xx-xx xx:xx:xx ...
3 A xxxx-xx-xx xx:xx:xx ...
4 C xxxx-xx-xx xx:xx:xx ...
5 B xxxx-xx-xx xx:xx:xx ...
6

A

xxxx-xx-xx xx:xx:xx ...

 

 

 

 

 

 

 

 

 

 

 

怎样用一条select语句实现这种规则的排序结果?

2012年10月23日 15:59

3个答案 按时间排序 按投票排序

1 0

采纳的答案

mysql实现:

select id,type,date,context from (
	select id,
	(case type when 'A' then 2 when 'B' then 3 else 1 end) level,
	type,
	date,
	context
	 from t_context 
) t
order by t.level desc,t.date desc;


oracle的话,可以把case部分用decode代替

2012年10月23日 16:26
0 0

如果优先级大小无法调整,可以用case when 或者union

2012年11月01日 02:15
0 0

其实主要还是你们设计有问题,如果优先级这样设计:
优先级依次为A>B>C这样在效率上要高很多

2012年11月01日 02:13

相关推荐

    数据库SELECT语句总结

    本文总结了数据库SELECT语句的各种应用,包括插入、修改、查询、添加数据行、排序、对比等数据操作语句。这些语句对数据库操作非常实用。 插入数据行 INSERT 语句用于插入新的数据行到数据库表中。基本语法为:`...

    MySQL中select语句使用order按行排序

    例如,如果你想获取每个部门员工薪水的最高者,可以先按照部门分组,再对薪水降序排序,最后只取每组的第一条记录: ```sql SELECT department, MAX(salary) FROM employees GROUP BY department ORDER BY MAX...

    oracle一条sql语句分页

    当表中的每一行被检索时,Oracle会自动为每一行分配一个ROWNUM值,该值默认从1开始递增。需要注意的是,ROWNUM的计算是在SQL语句执行的过程中完成的,并且一旦为某一行分配了ROWNUM值后,这个值就不会再改变。这意味...

    SQL Select语句完整的执行顺序

    本文将详细介绍SQL Select语句的完整执行顺序,并解释每个步骤的意义。 #### 执行顺序概览 SQL Select语句的执行顺序大致可以分为以下几个步骤: 1. **FROM 子句**:确定查询的数据源。 2. **JOIN 子句**:连接多...

    SqlServer删除所有表数据语句

    下面我们将介绍如何使用一条 Sql Server 语句删除当前数据库中所有表的数据。 删除所有表数据 删除所有表数据的语句使用了存储过程来实现。首先,我们需要创建一个存储过程 `sp_DeleteAllData`,该过程将删除所有...

    SELECT语句的完整语法 可参考资料

    ### SELECT语句的完整语法详解 #### 一、概述 `SELECT`语句是SQL语言中最常用也是最重要的组成部分之一,主要用于从数据库中检索数据。它提供了丰富的选项来满足不同的查询需求,包括但不限于筛选特定的数据记录、...

    SQL Server中select语句的使用技巧.pdf

    "SQL Server中select语句的使用技巧" 本文主要介绍了SQL Server中select语句的使用技巧,以商品信息管理数据库为例,详细介绍了关系数据库管理系统中SQL查询语句—select的基本用法和使用技巧,包括单表的基本查询...

    SQL语句select用法详解

    14. **[UNION]**:合并两个或多个SELECT语句的结果集。 - `UNION`会自动去除重复行。 - `UNION ALL`包含所有行,包括重复行。 15. **[ORDER BY Clause]**:排序查询结果。 - 指定按哪些列进行排序以及升序还是...

    数据库原理与应用 实验 select语句

    ### 数据库原理与应用实验——SELECT语句详解 在数据库管理与操作中,`SELECT`语句是最常用且最重要的SQL语句之一。它用于从一个或多个表中检索数据,并根据特定条件对数据进行筛选、排序等处理。下面将详细解释...

    25.1 MySQL SELECT语句

    MySQL支持多种连接操作,如`UNION`用于合并两个或更多`SELECT`语句的结果集,`INTERSECT`找到多个查询结果的交集,`EXCEPT`找到第一个查询结果中不在第二个查询结果中的行。 通过熟练掌握这些知识点,你可以有效地...

    使用T-SQL语句实现简单查询.pptx

    * ORDER BY子句:用于指定在SELECT语句返回的列中所使用的排序顺序。 * INTO子句:用于将查询结果保存在指定的目标数据表中。 二、T-SQL语句的简单查询 现在,让我们来学习使用T-SQL语句实现简单查询。 1. 使用...

    数据库分页SQL语句实现

    ### 数据库分页SQL语句实现 在开发MIS系统或Web应用系统时,经常会遇到对数据库进行分页处理的需求。这是因为数据量庞大时,一次性加载所有数据会给系统带来很大的负担,同时也会影响用户体验。因此,分页技术成为...

    库存收发存报表汇总统计数据库语句实现

    本案例主要介绍如何利用T-SQL语句在Microsoft SQL Server(mssql)数据库中实现库存收发存的实时查询功能,通过一条SQL语句完成业务逻辑。 首先,我们来理解一下库存收发存报表的基本业务要求。库存包括期初库存、...

    在VFP中利用SQL语言中的SELECT语句快速统计学生成绩.pdf

    在对学生成绩进行排名时,可以通过SELECT语句结合子查询来实现。例如,对于七年级学生的排名,可以使用如下的SQL语句: SELECT 名次 = 1 + (SELECT COUNT(*) FROM 成绩数据表 WHERE 总分 > 成绩数据表.总分) FROM ...

    ms sql语句怎么样对随机记录进行排序

    本文将深入探讨如何使用MS SQL语句实现这一功能,并结合提供的SQL代码片段,详细解析其中涉及的关键知识点。 ### 随机排序的核心概念 随机排序意味着查询结果中的记录将以一种不可预测的顺序出现。在SQL Server中...

    第05章_排序与分页.docx

    如果我们知道返回结果只有 1 条,就可以使用 LIMIT 1,告诉 SELECT 语句只需要返回一条记录即可。 拓展 在不同的 DBMS 中,分页的实现方式可能不同。例如,在 SQL Server 和 Access 中,使用 TOP 关键字,而在 ...

    oracle数据库常见99条的查询语句

    以上列举了Oracle数据库中常见的查询语句及其功能说明,这些查询语句覆盖了基础查询、条件筛选、数据排序等多个方面,对于理解和应用Oracle数据库查询具有很高的实用价值。通过这些示例,读者可以更深入地了解如何...

    在ORACLE中实现SELECT TOP N的方法

    Oracle本身并不直接支持类似于SQL Server中的`SELECT TOP`语句,但可以通过`ROWNUM`伪列来实现类似功能。`ROWNUM`用于返回每行数据的顺序号,配合子查询可以方便地获取指定数量的记录。 **示例代码:** ```sql -- ...

    如何在Oracle中实现SELECT_TOP_N的方法

    在Oracle数据库中,由于不直接支持SQL Server中的`SELECT TOP N`语法,我们需要采用其他方法来获取表中的前N条记录。以下是如何在Oracle中实现类似功能的详细步骤。 1. **基本方法:使用ROWNUM和ORDER BY** Oracle...

    Oracle各种select查询语法

    该语句将插入一条新的记录到emp表中。 10、更新记录 update emp set sal=sal*1.05 where job = (select job from emp where ename='SCOTT'); 该语句将更新emp表中job字段等于SCOTT的记录的sal字段。 11、模糊...

Global site tag (gtag.js) - Google Analytics