php - mysql查询,自定义顺序

标签 php mysql select

我有以下 mysql 查询:

SELECT 
       col1, 
       col2, 
       col3 
FROM 
       guests 
WHERE 
       active = 1 AND 
       guestId IN (233, 255, 254, 226, 182, 231, 113, 121)

然而,当我得到结果时,我得到的是按 guestId(已编入索引)升序排列的结果(从 121 开始到 255 结束)。我需要按特定顺序在我的网站上显示结果。有什么方法可以绕过默认顺序吗?

谢谢。

最佳答案

您必须在 ORDER BY 子句中指定自定义顺序:

SELECT col1, col2, col3 FROM guests 
WHERE active = 1 AND guestId IN (233, 255, 254, 226, 182, 231, 113, 121)
ORDER BY FIND_IN_SET(guestId, '233,255,254,226,182,231,113,121');

内置的 FIND_IN_SET() 函数返回一个整数,它是第一个参数在列表中找到匹配项的位置。请注意,该列表是包含逗号分隔列表的单个字符串参数,而您的 IN() 谓词需要可变数量的参数。此外,IIRC 在您提供给 FIND_IN_SET() 的列表中不能有空格。

关于php - mysql查询,自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369883/

相关文章:

php - apache mod_rewrite url 问题

javascript - Wordpress ~ 如何在一个页面上显示多个 Google Chart?

php - Codeigniter insert_batch() 函数性能和限制?

jquery - 如何在选择更改时提交表格

javascript - 具有过滤功能的 HTML 和 javascript <select> 标签

PHP _POST 问题毫无意义。值(value)观消失?

mysql - SQL 错误版本 5.5.15

mysql - mysql 触发器应该发生在应用程序级别还是数据库级别?

mysql - 如何在mysql中同时选择true和false列值

mysql - "Categorize"或 "Mark"选择查询