0

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 ;
4

1 に答える 1

1

次のように使用してみてください:

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.useridfind_in_set

FIND_IN_SETは、最初の引数のインデックスを 2 番目の引数に返します。そのため、クエリが機能したことに非常に驚いています .....

于 2012-04-17T14:21:40.903 に答える