mysql 实现按 where in () 中的顺序排序,用find_in_set() 函数

select * from table where id in ('783',' 769',' 814',' 1577',' 1769') 
order by find_in_set( id, '783, 769, 814, 1577, 1769' ) 
 
查出来:
 
769
1577
814
1769
783
 
为什么不是 783 769 814 1577 1769 的顺序?
注意:经查找后原因出在find_in_set里面,如果find_in_set的第二个参数中有空格将导致顺序乱掉,因为mysql查询之前不会给你trim空格符。
 
so...
去空格后:
 
select * from table where id in ('783',' 769',' 814',' 1577',' 1769') 
order by find_in_set( id, '783,769,814,1577,1769' ) 
 
注意只是去掉了

'783,769,814,1577,1769' 中的空格
 
再查出来:
 
783
769
814
1577
1769
 
至此我们实现用where in + find_in_set 的排序,find_in_set 还可实现多条件排序 试试哦

时间: 2024-09-18 09:10:40

mysql 实现按 where in () 中的顺序排序,用find_in_set() 函数的相关文章

C++实现顺序排序算法简单示例代码_C 语言

本文实例讲述了最直接的顺序排序法VC++示例代码,还记得以前上学时候这是计算机的必考题,而且在排序算法中,顺序排序似乎是最简单的了,也是最容易掌握的.现在列出来让大家重新回顾一下! 具体代码如下: //顺序排序 void InsertSort(int r[], int n){ for (int i=2; i<n; i++){ r[0]=r[i]; //设置哨兵 for (int j=i-1; r[0]<r[j]; j--) //寻找插入位置 r[j+1]=r[j]; //记录后移 r[j+1]

窗体中字段顺序不同于Access 2007中记录源中字段顺序

症状 Microsoft Office Access 2007, 中拖动字段到窗体, 时窗体中字段顺序不同于记录源中字段顺序. 如果下列条件为真会发生此问题: • 在拖动字段来自记录源中的表. • 您将字段拖动到版式视图中窗体. 原因 出现此问题的是因为中表记录源中字段显示顺序与中访问 2007 返回字段顺序无关. 更多信息 步骤来重现问题 1. 在 Access 2007年打开数据库. 2. 关闭所有打开对象. 3. 在 创建 选项卡, Forms 组中单击 空白表单 . 窗体版式视图中打开.

mysql用命令向表中添加数据刷新不显示

问题描述 mysql用命令向表中添加数据刷新不显示 mysql用命令向表中添加数据刷新不显示,每次都要关闭mysql后再打开就能看到添加进去的数据,不想这么麻烦,求大神相助,有没有好办法不关闭mysql只刷新就可以看到数据 解决方案 你应该是把Mysql的自动提交给关了吧!重新打开就行了 show variables like "autocommit"; 看value 是否为ON 不为ON的话 set autocommit=1; 这样应该就可以看到数据了 解决方案二: 直接命令行模式下

buffer-在下面的java程序中添加按照字母顺序排序,如何添加

问题描述 在下面的java程序中添加按照字母顺序排序,如何添加 package test1;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern; p

求解答!!!java中输出顺序的问题!

问题描述 求解答!!!java中输出顺序的问题! public String work() { System.out.print("的工作理念是干活挣钱有饭吃"); return ""; } System.out.println(hanbing.getName()+hanbing.work()); 为什么输出的结果是:的工作理念是干活挣钱有饭吃韩冰 解决方案 1.work方法中的print被执行,打印输出"的工作理念是干活挣钱有饭吃" 2.然后h

mysql 怎么查询整个数据库中某个特定值所在的表和字段?

问题描述 mysql 怎么查询整个数据库中某个特定值所在的表和字段? 比如说有 person表中有name="苹果",goods表中有label="苹果" 那么根据"苹果"怎么确认person 与 goods这两张表及各自对应的是name与label字段呢? 解决方案 查询整个数据库中某个特定值所在的表和字段的方法查询整个数据库中某个特定值所在的表和字段的方法查询整个数据库中某个特定值所在的表和字段的方法 解决方案二: 如果,你说的Pseron里

JAVA+Mysql程序,想在Mysql的一张表中让数据库自动生成一个字段的Icq号

问题描述 JAVA+Mysql程序,想在Mysql的一张表中让数据库自动生成一个字段的Icq号 我想做个聊天系统,想在Mysql的一张注册表中,加入注册信息后,让数据库自动生成一个Icq号.好像我们的QQ账号似的.简单的只要能实现就行.我新手. 解决方案 添加一个字段,设置为int或bigint类型,在设置主键自增长(AUTO_INCREMENT ). 解决方案二: 添加一个字段,设置为int 主键 自动增长就可以了. 解决方案三: 数据库增加一列,设置为标识列,有种子和增量. 解决方案四: 可

C语言左旋转字符串与翻转字符串中单词顺序的方法_C 语言

左旋转字符串题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部. 如把字符串 abcdef  左旋转 2  位得到字符串 cdefab.请实现字符串左旋转的函数. 要求时间对长度为 n  的字符串操作的复杂度为 O(n),辅助内存为 O(1). 分析: 网上看到解法很多种,就不详细说明了. 我采用的是数组不对称的交换时间复杂度应该是O(n). 代码实现(GCC编译通过): #include "stdio.h" #include "stdlib.h&qu

请问:java中,运用属性文件的方法怎么把mysql加载到memcached中?谢谢!

问题描述 请问:java中,运用属性文件的方法怎么把mysql加载到memcached中?谢谢! 请问:运用属性文件的方法怎么把mysql加载到memcached中?谢谢! 解决方案 http://blog.csdn.net/jiedushi/article/details/6176940