这是带有IN子句的简单查询。但问题是我需要以ids的相同顺序获得输出。
SELECT GROUP_CONCAT(username) as users FROM usertable WHERE usr_id IN (54,68,46)
例如,如果我通过了54,68,46,那么带有usr_id 54的行应先到68然后再到46。有没有办法在MySQL中实现这一点?
答案 0 :(得分:2)
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)
答案 1 :(得分:1)
您需要在GROUP_CONCAT中使用ORDER BY
子句:
SELECT GROUP_CONCAT(username ORDER BY user_id ASC) as users
FROM usertable
WHERE usr_id IN (54,68);
答案 2 :(得分:1)
我们可以在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
。如果有人用这种简单的方法给出答案,我可以接受这个答案。