mysql排序

Mysql查询语句之排序查询

半腔热情 提交于 2019-12-06 05:20:40
语法: /* select 查询列表   from 表   【where 筛选条件】   order by 排序列表 【asc/desc】 */ ①asc为升序,desc为降序,且默认为升序 ②order by子句可以支持单个字段、多个字段、表达式、函数、别名 ③order by子句一般放在查询语句的最后面,limit子句除外 来源: https://www.cnblogs.com/algorithmpuppy/p/11963775.html

mysql in根据查询id排序

我只是一个虾纸丫 提交于 2019-12-05 19:00:26
mysql in根据查询时,返回结果是自行排序的,如果要按照我们查询的ID进行排序,要用到order by field,下面用几个例子来说明一下mysql in查询排序 例子: SQL:select * from table where id IN (3,6,9,1,2,5,8,7); 这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?我们可以用order by field SQL: select * from table where id IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7); 查询出来的结果就是按自定义的ID进行排序了 来源: oschina 链接: https://my.oschina.net/u/934067/blog/110701

MySQL解惑——GROUP BY隐式排序

匆匆过客 提交于 2019-12-05 18:58:05
原文: MySQL解惑——GROUP BY隐式排序 MySQL中GROUP BY隐式排序是什么概念呢? 主要是其它RDBMS没有这样的概念,如果没有认真了解过概念,对这个概念会感觉有点困惑,我们先来看看官方文档的介绍: 官方文档MySQL 5.7 Reference Manual中的 “ .2.1.14 ORDER BY Optimization ” 章节有如下介绍: GROUP BY implicitly sorts by default (that is, in the absence of ASC or DESC designators for GROUP BY columns). However, relying on implicit GROUP BY sorting (that is, sorting in the absence of ASC or DESC designators) or explicit sorting for GROUP BY (that is, by using explicit ASC or DESC designators for GROUP BY columns) is deprecated. To produce a given sort order, provide an ORDER BY clause. 默认情况下GROUP

MySQL中自定义排序

我怕爱的太早我们不能终老 提交于 2019-12-05 17:04:01
在开发时候,我们经常使用的是默认的排序规则,但在某些特殊情况下,通过指定顺序来进行排序 -- fileld自定义排序时,应该是非主键的,否则主键是无效 SELECT * FROM customer WHERE telephone IN ( '1832xxxx701', '1739xxxx553', '1855xxxx601' ) ORDER BY FIELD( telephone, '1832xxxx701', '1739xxxx553', '1855xxxx601' ) ASC; 来源: https://www.cnblogs.com/fatRabbit-/p/11934975.html

谈谈MySql索引

允我心安 提交于 2019-12-05 12:34:25
刚刚学习完丁奇老师《MySql 实战 45 讲》专栏中的索引部分,图文并茂的风格解开了我之前的许多疑惑,并且学习到许多新的东西,在此做个笔记,方便后续复习。由于 MySql 中存在多种存储引擎,每种存储引擎的实现方式都不太一样,而 InnoDB 在现在是比较流行的存储引擎,因此以下内容都是基于 InnoDB 讨论的。 索引是如何存储的 InnDB 索引是基于 N叉树实现的,为什么要使用 N叉树而不是二叉树呢?这是因为 MySql 中的数据都是存储在磁盘中的,我们查找数据都要进行 IO 操作,IO 操作比 CPU 运行的速度慢了一个等级,使用二叉树存储数据时,当我们从一个节点出发,要找它的子节点,就得进行一次 IO 操作,当数据库存储的数据多了之后,二叉树的层数变高,进行数据查找时 IO 操作也变多了。为了减少数据查询时的 IO 操作,InnDB 底层是使用 N叉树存储的,这个 N 取决于数据块的大小。 主键索引、非主键索引 上面说到,InnoDB 索引是基于 N叉树实现的,但是一个表我们需要建立的索引个数不止一个,因此每建立一个索引,InnoDB 就会创建一颗 N叉树来维护该索引数据,索引树建立完之后 InnDB 是如何通过索引找出我们所需要的数值的呢? 假设有一张表是这个样子的: create table T( id int primary key, k int not null

索引与Order By

眉间皱痕 提交于 2019-12-04 20:26:43
Order By 将对结果进行排序,这里的排序最大的特点是资源密集型,尽管多数时候它同时也是CPU密集型的。 数据库在进行排序时,必须缓冲临时结果,读取到所有输入,并在完整的排序操作后才能产生第一个输出。这些操作要么在内存中就能处理掉,要么需要借助磁盘空间(各RDBMS实现不同),但都避免不了不少的内存消耗,后者更是涉及耗时的磁盘IO。 而连接是不同的,它无需缓冲整个中间结果集,中间结果的每一条记录可以立即传递到下一个join操作,连接是流水线操作。 索引,特别是B树索引,可以看成是数据的一种有序存储方式。这意味着Order By其实是可以利用索引中的有序数据,这有2层意思,一是Order By可以避免自己排序操作,索引中的数据已经是有序的,二是无需缓冲结果集,可以流水线处理。 数据库可以从两个方向读取索引,当索引中的顺序与Order By子句中指定的顺序相反时,不会影响流水线处理。MySQL忽略索引声明中的ASC与DESC修饰。(当索引多列时排序方向的影响可能需要进一步分析)为了适用索引,Order By字段必须包含于Where子句使用的索引中。 一些有排序处理的操作也适用,如Group By,虽然SQL标准没有要求,但实际上多数DBMS实现时会在Group By上构建一个临时索引并在此基础上进行排序,所以没有指令时Group By输出可能也是有序的。 来源: https:/

数据库查——select的基本使用

六月ゝ 毕业季﹏ 提交于 2019-12-04 19:47:44
--创建学生表 create table students ( id int unsigned not null auto_increment primary key, name varchar(20) default '', age tinyint unsigned default 0, high decimal(5,2), gender enum('男', '女', '中性', '保密') default '保密', cls_id int unsigned default 0, is_delete bit default 0 ); --往students表里插入数据 insert into students values (0,'小明',18,180.00,1,1,0), (0,'小月月',19,180.00,1,2,0), (0,'彭于晏',28,185.00,1,1,0), (0,'刘德华',58,175.00,1,2,0), (0,'黄蓉',108,160.00,2,1,0), (0,'凤姐',44,150.00,4,2,1), (0,'王祖贤',52,170.00,2,1,1), (0,'周杰伦儿',34,null,1,1,0), (0,'程坤',44,181.00,1,2,0), (0,'和珅',55,166.00,1,2,0), (0,'刘亦菲',29,162.00

常用sql语句--DQL

孤街浪徒 提交于 2019-12-04 15:25:24
数据查询语言 关键字 select where 条件 order by 排序 asc(升序)、desc(降序) 排序语法:order by 字段1 [asc]|desc [,字段2 [asc]|desc,....] MySQL中中文排序规则 注意:在utf—8编码集下排序并不是按照中文拼音进行排序,需要改为GBK编码集 修改为按照拼音排序方法: SELECT * FROM teachers ORDER BY CONVERT(tName USING GBK),tage DESC; limit 取前多少条-limit limit语法:limit m[,n] 说明: 当limit后只有M一个数字是时,表示在结果集中取前m条数据 当limit后有两个数字时,表是在结果集中从M+1开始取n条数据 例子: SELECT * FROM teachers ORDER BY tage DESC LIMIT 2; 取前面两条 SELECT * FROM teachers ORDER BY tage DESC LIMIT 1,1; 从第二条开始取一条 使用limit分页 limit (页码-1)*每页显示信息数,每页显示信息数 SELECT * FROM ta ORDER BY id DESC LIMIT 0,2; 第一页信息,每页两条数据 SELECT * FROM ta ORDER BY id

PHP常用单词

怎甘沉沦 提交于 2019-12-04 09:17:20
(一) 原始数据类型。 A. 四种标量类型: a) boolean (布尔型) b) integer (整型) c) float (浮点型,也称作 double ) d) string (字符串) B. 两种复合类型: a) array (数组) b) object (对象) C. 特殊类型: a) resource (资源) b) NULL (无类型) D. 伪类型 : a) mixed (混合类型) b) number (数字类型) e) callback (回调类型) (二) 常用内部函数: A. 字符串函数: f) 输出与格式化:echo print printf print_r var_dump. g) 字符串去除与填充:trim ltrim rtrim str_pad h) 字符串连接与分割:implode join explode str_split i) 字符串截取:substr strchr strrchr, j) 字符串替换:str_replace substr_replace k) 字符串长度与位置: strlen strpos strrpos l) 字符转换:strtolower strtoupper lcfirst ucfirst ucwords m) 特殊字符处理:nl2br addslashes htmlspecialchars

【MySQL】各种小坑-持续更新

蹲街弑〆低调 提交于 2019-12-04 08:46:24
中文乱码问题 在建表的时候额外执行 ALTER TABLE camera CONVERT TO CHARACTER SET utf8;  如果还是不行注意看一下precision,为2的时候容易出现??这样,需要重新执行一次ALTER操作。 排序问题 order by的那一列如果有多个相同的值,安这列进行排序的时候不会按照原来的顺序维持这些行的顺序,因此既需要order by某列又需要保持值相同的行维持原序的时候需要再order by id一次。 关于多个字段排序的问题可以参考 多字段排序 注意优先级高的字段要放在前面,例如 SELECT * FROM students st ORDER BY st.sAge ASC, st.sGrade DESC, st.sStuId DESC; 会按照age先排序,age相同按照grade排序,grade再相同按照id排序。 来源: https://www.cnblogs.com/Ryan16231112/p/11849448.html