sql排序

sql语句 多条件排序

喜你入骨 提交于 2019-12-02 14:56:29
(1)入参为Map。 (2)Map中排序参数: sortName:排序字段。 sortWay:排序方式。 (3)sql语句中的otherwise,两种情况: 排序字段为空,默认一个排序字段。 排序字段没找到,默认一个排序字段。 以下为排序的代码: order by <choose> <when test="params.sortName != null and params.sortWay!=null "> <choose> <when test='params.sortName=="name"'>name</when> <when test='params.sortName=="status"'>status</when> <when test='params.sortName=="gmtCreate"'>gmt_create</when> <!-- 排序字段没找到,默认一个排序字段--> <otherwise> gmt_create </otherwise> </choose> <if test=" params.sortWay=='asc'.toString()">ASC</if> <if test="params.sortWay=='desc'.toString()">DESC</if> </when> <!-- 排序字段为空,默认一个排序字段--> <otherwise>

Day3 - 数据库SQL语句——排序

本秂侑毒 提交于 2019-12-02 10:41:11
排序 为了方便查看数据,可以对数据进行排序 语法: select * from 表名 order by 列1 asc|desc,列2 asc|desc,… 将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推 默认按照列值从小到大排列 asc从小到大排列,即升序 desc从大到小排序,即降序 例1:查询所有学生信息,按年龄从小到大排序 select * from students order by age 例2:查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序 select * from students order by age desc,studentNo 练习: 1、查询所有学生信息,按班级从小到大排序,班级相同时,再按学号再按学号从小到大排序 来源: https://www.cnblogs.com/hyf224317/p/11741952.html

Sql 从31排序到 40

╄→гoц情女王★ 提交于 2019-12-02 08:05:37
Sql 从31排序到 40 并且ID不连续的情况:select * from(select *,ROW_NUMBER() over(order by ID)as 'userID' from A) as a where a.userID between 31 and 40要注意改方法只能使用与sql2005以后并且ROW_NUMBER() over(order by ID)必须排序 有先获取获取前40条数据并且按照倒叙的方式排列,在取其中的前十条 select top 10 * from (select top 40 ID from A order by ID) as a order by a.ID desc 来源: https://www.cnblogs.com/YZM97/p/11736511.html

sql中多条件进行排序的问题

久未见 提交于 2019-12-02 00:42:47
order by后边的字段并不是唯一的,支持多个,按照你排序的先后顺序写就可以了。另外按照每个字段的升序和降序同样支持。默认是升序的。如下 order by column1(asc or desc),column2(asc or desc),column3(asc or desc),column4(asc or desc)... 来源: https://www.cnblogs.com/qingmuchuanqi48/p/11723520.html

MySQL的SQL种类

旧巷老猫 提交于 2019-12-01 01:57:14
SQL种类主要分为: DDL:数据库(对象)定义语言 。 (Data Definition Languag) DCL:数据库控制语言(grant revoke)(Data Control Language) DML:数据(行)操作语言(update delete insert)(Data Manipulation Language) DQL: 数据查询语言(show、select) (Data Query Language) DDL操作 对象:包括库和表 库 定义什么? 1、库名字 2、库的基本属性 如何定义? create database lufei; 创建数据库lufei create schema lf; 创建数据库lf,和上面的命令执行结果一样 show databases; create database llf CHARACTER SET utf8 ; show create database llf; # 查看创建数据库的语句 drop database llf; help create database; # 查看帮助文档 字符集: CHARACTER SET [=] charset_name 排序规则:COLLATE [=] collation_name 改库的字符集: ALTER DATABASE [db_name] CHARACTER SET charset

基于oracle的sql优化

时光总嘲笑我的痴心妄想 提交于 2019-11-30 21:46:56
一.编写初衷描述 【博客地址】http://www.cnblogs.com/grl214 在应有系统开发初期,由于数据库数据较少,对于sql语句各种写法的编写体现不出sql的性能优劣,随着数据的不断增加,出现海量数据,劣质sql与优质sql在执行效率甚至存在百倍差距,可见sql优化的重要性 二.Sql语句性能优化 2.1 认识Oracle的执行过程 2.2 Oracle优化法则---漏斗法则 2.3 Oracle 执行计划 2.3.1 什么是Oracle执行计划 执行计划是一条查询语句在Oracle中执行过程或者访问路径的描述. 2.3.2 查看Oracle执行计划 1.执行计划常用的列字段解释 基数:返回的结果集行数 字节:执行该步骤后返回的字节数 耗费(cust),CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好. 2.3.3 看懂Oracle执行计划 2.3.3.1执行顺序 根据缩进来判断,缩进最多的最先执行(缩进相同时,最上面的最先执行) 2.4 表的访问方式 TABLE ACCESS FULL(全表扫描) TABLE ACCESS BY ROWID(通过rowid的表存取) TABLE ACCESS BY INDEX SCAN(索引扫描) 2.4.1 ABLE ACCESS FULL(全表扫描) Oracle会读取表中的所有行

sql优化问题

最后都变了- 提交于 2019-11-29 19:03:33
数据库的优化问题 一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优 化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的 SQL语句,提高系统的可用性。   在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的 SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种 原则来删除索引,这有助于写出高性能的SQL语句。  二、SQL语句编写注意问题   下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。   1. IS NULL 与 IS NOT NULL   不能用null作索引

SQL Server 2005 排序order by对查询性能的影响(1)

≯℡__Kan透↙ 提交于 2019-11-29 08:20:59
在web开发中经常碰到排序,可能有人有这样的想法: 1,排序是什么时候排序,是在执行sql语句前完成排序功能,还是最后? 2,排序对sql语句性能有影响吗? 3,在排序中建立索引有好处吗? 这段时间,在优化系统时,也碰到类似的问题,今天我们来讨论一下排序这个问题, 1,首先我们看看什么时候排序 执行以下的sql语句: SELECT * FROM [ dbo ] . [ [[zping.com ] ]]]] where laststepid = ' 402882ed0ea1c940010ea2332879007f ' order by workflowid 执行计划: 这里发现,sql server中排序是在数据找出来以后在进行排序的, 如果我们在前面加上一个top 2 *限制条件,那”Sort“和“ Top N ”谁先谁后啦。执行了一下, 发现,”Sort“和“ Top N ”合并成了一个“ Top N Sort ”操作,在排序时,就直接选出数据了 顺序: 排序是“top N”前执行,查出全部数据后执行的。 2,排序对sql语句性能有影响吗? 1,上面刚刚看到,但通过索引选出来的数据比较少时,排序是很快的。对性能没有影响。uju 2, 但如果查询没有条件,如下列sql SELECT TOP ( 10 * ( 100 - 1 )) ID FROM [ dbo ] . [ [

Oracle分页查询排序数据重复问题

╄→гoц情女王★ 提交于 2019-11-29 00:45:04
参考资料:    http://docs.oracle.com/database/122/SQLRF/ROWNUM-Pseudocolumn.htm#SQLRF00255    http://blog.csdn.net/u010395242/article/details/52047341 在采用以下所示的方式: SELECT * FROM (SELECT row_.*, rownum rownum_ FROM (SELECT * FROM table_name WHERE 1 = 1 ORDER BY table_name.create_date) row_ WHERE rownum <= 10) table_alias WHERE table_alias.rownum_ > 0 进行分页查询数据时,出现数据重复的现象,经查阅资料: 造成这一问题出现的原因是:在数据中,排序列值的不唯一性,也就是create_date的值不是唯一的。 在Oracle中: Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端。 而Oracle的排序算法不具有稳定性,也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。 解决方法如下(两个条件必须同时满足):   1.sql语句中需要有排序条件。   2

List集合的排序

拜拜、爱过 提交于 2019-11-28 18:06:31
最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序, 当时第一想法便是写一个for循环,然后得到想要的排序。事后,偶然间看到一个工具类Collections,其中有一个方法是reverse, 示例逆序代码如下,核心代码只要一句,非常简单: 以上是最简单的逆序,平时在写代码里往往会根据某一个条件或者字段等等进行排序。如果碰上这样的需求,一般会有两种方法: 第一种是list中的对象实现Comparable接口; 第二种方法是根据Collections.sort重载方法来实现。 此处,我就用第二种方法做一个示例 既然要根据某一条件进行排序,那么先做好前期准备,这里new了三个map,分别把一些数值put到map里,key为countNum,value为不同的值,如下: 接着定义要排序的字段(我这里用的是countNum),以及重载sort()方法,最后打印输出,如下: 其中new Comparator<Map>()的Map也可以是一个bean,return的写法也可以是io1 .compareTo(io2); 具体有什么不同,就由小伙伴自己尝试了,毕竟这个太简单了,就不说了。 这里再啰嗦一下说一下原理,为什么return的时候用了compareTo()方法就能排序好,理由如下: