繁体   English   中英

在mysql中取消排序结果

[英]un-sort results in mysql

我在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

FIND_IN_SET返回第二个参数中第一个参数的索引-因此,我很惊讶您的查询甚至起作用.....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM