php - mysql中的未排序结果

标签 php mysql mysqli

我被 MYSQL 5.5 中的 FIND_IN_SET 函数困住了,例如:

请检查以下查询,考虑到 10,9,5,8,21 是用户 ID

SELECT u.user_id,u.first_name,u.last_name
FROM user u 
WHERE 
u.is_active = 'Y'       
AND FIND_IN_SET(u.user_id,'10,9,5,8,21');

当我触发此查询时,它会按用户 ID 的升序给出结果

5
8
9
10
21

我想要的顺序与我输入的顺序相同

10
9
5
8
21

有什么办法可以实现吗?

存储过程

DROP PROCEDURE IF EXISTS databaseName.procName;
DELIMITER //
CREATE PROCEDURE databaseName.procName(IN ZoneIDs LONGTEXT)

BEGIN       
        SELECT u.user_id,u.first_name,u.last_name

        FROM user u     
        WHERE u.is_active = 'Y'
        AND FIND_IN_SET(u.user_id,ZoneIDs); 

END //
DELIMITER ;

最佳答案

尝试像这样使用它:

SELECT u.user_id,u.first_name,u.last_name
FROM user u 
WHERE u.is_active = 'Y' and u.user_id IN (10,9,5,8,21)
ORDER BY FIND_IN_SET(u.user_id,'10,9,5,8,21');

这使用 IN 仅选择该列表中 u.userid 所在的数据,然后使用 find_in_set 按您的特定顺序进行排序

FIND_IN_SET返回第二个参数中第一个参数的索引 - 所以我很惊讶你的查询甚至有效......

关于php - mysql中的未排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192952/

相关文章:

php - 将我的站点从 XAMPP 上传到 Apache 公共(public)主机

php - 在模态视图上显示所选行的完整信息

php - 访问RFID的编程语言

php - MYSQL 重复条目

php - 在 Cakephp 中将两个模型之间的表链接在一起

php - 使用 PHPExcel 写入数据库的更简单方法

java - 为什么我们需要创建数据库,而我们可以使用 Hibernate 生成它们?

php - MySQL查询多个数据库

java - 无法连接到 SMTP 主机 : x. x.x.x,端口:java 中的 25

php - 我可以在 PHP 中混合使用 MySQL API 吗?