MySQL查询结果按某值排序
使用MySQL很多时候我们不仅只是查询出结果,还需要对查询结构进行排序,下文对查询结果按某值排序的方法作了详细的介绍,供您参考。
AD:
MySQL查询结果如何排序呢?这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看。
之前有一个功能修改,要求MySQL查询结果中:
id name * * *
1 lucy ...
3 lucy ...
2 lily ...
4 lucy ...
名字为lucy的优先排在前面,百思不得其解,可能有人会说简单 union嘛 或者弄个临时表什么的,其实我也想过,但是本身SQL逻辑就很多了(上面只是简例),再union的话或者临时表可能绕很大的弯路,后来看到一篇文章尝试着加入order by find_in_set(name,'lucy') ,结果 得到的结果为lucy全部在下面,随即我改为order by find_in_set(name,'lucy') desc 实现结果为
id name * * *
1 lucy ...
3 lucy ...
4 lucy ...
2 lily ...
基本实现,可是又有点不确定的心情,查mysql文档发现find_in_set语法
FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列数据表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列数据表就是一个由一些被『,』符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包含一个逗号(『,』)时将无法正常运行
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
看了这个我估计结果为什么要加desc 了 find_in_set返回的值是,当存在lucy的时候 返回他的位置,没有的时候为0,空的时候null,所以排序为1,1,1,0,如果加在列上就为
id name FIND_IN_SET * *
1 lucy 1 ...
3 lucy 1 ...
2 lily 0 ...
4 lucy 1...
表结构如下:
mysql> select * from test;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
+----+-------+
执行以下SQL:
mysql> select * from test where id in(3,1,5);
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 3 | test3 |
| 5 | test5 |
+----+-------+
3 rows in set (0.00 sec)
这个select在mysql中得结果会自动按照id升序排列,
但是我想执行"select * from test where id in(3,1,5);"的结果按照in中得条件排序,即:3,1,5,想得到的结果如下:
id name
3 test3
1 test1
5 test5
方法如下:
select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5');
select * from test where id in(3,1,5) order by substring_index('3,1,2',id,1);
分享到:
相关推荐
这是很多人都提过的问题,下面就教您如何对MySQL查询结果按某值排序,如果您感兴趣的话,不妨一看。 之前有一个功能修改,要求MySQL查询结果中: id name * * * 1 lucy ... 3 lucy ... 2 lily ... 4 lucy ... 名字...
MySQL查询优化是数据库管理中的关键环节,特别是在大数据量的场景下,索引优化能显著提升查询性能。本文将深入探讨“mysql查询优化之索引优化”这一主题。 首先,了解索引的基本概念至关重要。索引是数据库为了快速...
- **排序**:指的是按照某一列或某几列的值对查询结果进行升序(ASC)或降序(DESC)排列的过程。 #### 使用场景示例 假设我们有一个名为`table`的数据表,其包含以下数据: | id | name | |----|--------| | 1 | ...
排序是通过对查询结果进行升序或降序排列,使得数据更加有条理,便于理解和分析。基本的语法结构如下: ```sql SELECT * FROM 表名 ORDER BY 列1 ASC|DESC [ ,列2 ASC|DESC ,...] ``` - `ASC` 表示升序排列,即...
3. **只显示一条重复内容**:若要保留重复数据中的某一条,可以选择其中的一个特定记录,比如按ID排序后的第一条或者最后一条。以下是一种方法,保留`id`最小的重复记录: ```sql SELECT t1.* FROM ( SELECT ...
- **解析**:此例中的关键在于如何使用`ORDER BY`子句对结果集按照多列进行排序,先按工资(`salary`)降序(`DESC`)排序,如果工资相同,则按照入职日期(`hire_date`)升序(`ASC`)排序。 #### 20. 查询姓名不包含M,且...
6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) not null, ...
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找...
这些子句用于限制查询结果的行数,通常用于实现分页功能。 1. **LIMIT**:指定要返回的记录数。 2. **OFFSET**:指定要跳过的记录数。 ##### 示例 ```sql SELECT column1, column2, ... FROM table_name LIMIT ...
如果只关心特定的几个字段,可以通过指定这些字段来简化查询结果。 #### 三、进阶查询技巧 **1. DISTINCT 关键字** - 作用:去除查询结果中的重复记录。 - 示例: ```sql SELECT DISTINCT gender FROM ...
3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1...
` 这个语句会根据指定条件从表中选取特定的行,然后按某列排序,并限制返回的行数。 2. **多表查询**: 当我们需要从多个相关表中获取数据时,就需要使用多表查询。常见的多表查询方法有JOIN、INNER JOIN、LEFT JOIN...
本资料“mysql查询语句汇总.rar”包含了一份关于MySQL查询语句的详细文档“mysql查询语句汇总.docx”,旨在帮助用户理解和掌握在MySQL中进行数据查询的各种方法。 1. **基础查询** - **SELECT语句**:用于从数据库...
3.6.3. 列的最大值:按组 3.6.4. 拥有某个字段的组间最大值的行 3.6.5. 使用用户变量 3.6.6. 使用外键 3.6.7. 根据两个键搜索 3.6.8. 根据天计算访问量 3.6.9. 使用AUTO_INCREMENT 3.7. 孪生项目的查询 3.7.1. 查找...
在MySQL中,获取查询结果集中记录的行号通常是一个挑战,因为与Oracle和SQL Server不同,MySQL并没有直接提供ROW_NUMBER()或RANK()这样的内置函数。然而,这并不意味着无法实现这一功能。一种常见的解决方案是利用预...
`ORDER BY`子句用于对查询结果进行排序,默认为升序(ASC),可以通过`DESC`关键字指定降序。`LIMIT`子句用于限制返回的记录数。 **示例**:如果要找出工资最高的前10名员工,可以使用如下语句: ```sql SELECT * ...
Mybatis查询某- -日、周、月数据.txt MySQL安装教程.txt MySQL查询最近-周、月每月、周统计数据.txt MySQL入Ar ]很简单学习笔记李国华.dox Oracle查看表结构.txt SQL作业代理禁用.txt sql.txt SQL-Transaction事物...