这是带有 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 中实现这一点?
我们可以FIND_IN_SET
像这样使用 on order by 子句以相同的顺序获取值。
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
相同的顺序。如果有人用这种简单的方法给出答案,我可以接受这个答案。
您需要在GROUP_CONCATORDER BY
中使用子句:
SELECT GROUP_CONCAT(username ORDER BY user_id ASC) as users
FROM usertable
WHERE usr_id IN (54,68);
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)