Mysql in 排序

SELECT `id` FROM `topic` WHERE `id` IN (‘444‘,‘512‘,‘447‘,‘509‘,‘504‘,‘445‘,‘511‘) ORDER BY FIELD(id,‘444‘,‘512‘,‘447‘,‘509‘,‘504‘,‘445‘,‘511‘)

SELECT `id` FROM `topic` WHERE `id` IN (‘444‘,‘512‘,‘447‘,‘509‘,‘504‘,‘445‘,‘511‘) ORDER BY INSTR(‘444,512,447,509,504,445,511‘, CONCAT(‘,‘, id,‘,‘))

时间: 2024-10-07 18:31:26

Mysql in 排序的相关文章

MySql 分组排序取时间最大的一条记录

SELECT A.* FROM digital_asset A, (SELECT name, max(last_updated) max_day FROM digital_asset GROUP BY name) B WHERE A.name = B.name AND A.last_updated = B.max_day SELECT A . * FROM bbs_threads A, ( SELECT digest, max( dateline ) max_dateline FROM bbs_

【MySQL】排序原理与案例分析

前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐含使用排序.本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍与排序相关的参数,最后会给出几个"奇怪"排序例子,来谈谈排序一致性问题,并说明产生现象的本质原因. 排序优化与索引使用 为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索

MySql之排序规则问题(2)

今天看到这个Sql语句,之前听说过,但是并未弄懂,因此在此特意做下笔记: userName varchar(20) collate chinese_prc_ci_as null 1.首先,collate是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影 ::={windows_collation_name}|{sql_collation_name} 参数:collate_name是应用于表达式列定义或数据库定义的排序规则的名称collation_name

mysql 自定义排序顺序

实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID AS VOUCHER1_0_, tsdvoucher0_.COMMENT_DEVICE_TYPE AS COMMENT2_0_, tsdvoucher0_.COMMENT_ID AS COMMENT3_0_, tsdvoucher0_.COMMENT_PERSON_NO AS COMMENT4_0_, tsdvoucher0_

MYSQL VARCHAR排序 CAST ,CONVERT函数 类型转换

自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为integer(2)的,但是今天在后台发现排序有问题,varchar排序有问题,所以该怎么解决呢? 示例表结构: 先来看一下,我的表结构 show create table cardserver \G *************************** 1. row *************************** Table: cardserver Create Table: CREATE TABLE `card

SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

原文:SQL Server 与MySQL中排序规则与字符集相关知识的一点总结 字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分.排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的比如中文字符集,也即汉字,可以按照“拼音排序”.“

[MySQL] 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit

前言:         同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.        oracle里面可以通过row_number() OVER (PARTITION BY cid,author ORDER BY id DESC) 表示根据cid,author分组,在分组内部根据id排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的),而mysql数据库就没有这样的统计函数,需要自己写复杂的sql来实现. 1,录入测试数据 USE csd

mysql高级排序&高级匹配查询示例

在大多数应用场景下,我们使用mysql进行查询时只会用到'=', '>' , '<' , in, like 等常用的方法,看起来,大多数情况下,已经足以应付我们的小型应用了.不过,在一些特殊场景,则需要特殊的查询方式了. 1. 根据状态来排序的查询 假设现在一个记录有四种状态,未处理(0).正在处理(2).处理成功(1).处理失败(4),之所以他们的值是这个样子,是因为我们一般情况下是不会用它去排序,所以自然的就想到这样的一些值赋予意义.但是,在排序的时候怎么处理呢? 假如要求的先后顺序是这样

mysql varchar排序

今天遇到个问题,mysql order by  字段 ,如果字段是varchar形式,但是里面存的是数字的话,排序会认为他是string类型排序,如下: 1 11 12 13 14 .. 19 2 20 21 .. 当数字位数多的时候,排序更乱. 解决访问就是 order by (字段+0) desc 这样,字段会被解析成数字的形式,所以可以正常的排序

MySQL自定义排序函数FIELD()

MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1.str2.str3.str4比较,返回1.2.3.4,如遇到null或者不在列表中的数据则返回0. mysql> select * from driver_log order by field(name,'Suzi','Ben','Henry'); +--------+-------+------------+-------+ | rec_id | nam