IN 句を使用した単純なクエリを次に示します。しかし、問題は、ID の同じ順序で出力を取得する必要があることです。
SELECT GROUP_CONCAT(username) as users FROM usertable WHERE usr_id IN (54,68,46)
たとえば、54,68,46 を渡すと、usr_id が 54 の行が最初に来て、次に 68、次に 46 が来るはずです。MySQLでこれを達成する方法はありますか?
IN 句を使用した単純なクエリを次に示します。しかし、問題は、ID の同じ順序で出力を取得する必要があることです。
SELECT GROUP_CONCAT(username) as users FROM usertable WHERE usr_id IN (54,68,46)
たとえば、54,68,46 を渡すと、usr_id が 54 の行が最初に来て、次に 68、次に 46 が来るはずです。MySQLでこれを達成する方法はありますか?
on order by 句を使用FIND_IN_SET
して、このように同じ順序で値を取得できます。
SELECT `username` as users FROM usertable WHERE usr_id IN (54,68,46) ORDER BY FIND_IN_SET(`usr_id`,"54,68,46")
GROUP_CONCAT
しかし、同じ順序にする方法がわかりません。この種の単純なアプローチで誰かがその答えを出したら、私はその答えを受け入れることができます。
SELECT group_concat(username order by case when usr_id=54
then 0
when usr_id=68
then 1
when usr_id=46
then 2
else 3
end) as users
FROM usertable
WHERE usr_id IN (54,68,46)
GROUP_CONCATORDER BY
で句を使用する必要があります。
SELECT GROUP_CONCAT(username ORDER BY user_id ASC) as users
FROM usertable
WHERE usr_id IN (54,68);