Mysql 编写一个将3行作为列表返回到一行的sql
我有以下SQL:Mysql 编写一个将3行作为列表返回到一行的sql,mysql,sql,Mysql,Sql,我有以下SQL: SELECT points FROM memberevents AS me WHERE memberid = memberevents.memberid ORDER BY id DESC LIMIT 3; 它返回以下内容: **points** 123 234 146 但我想创建返回如下的SQL(只有一条记录在带“-”号的点处): 有可能吗?试试: 您需要group\u concat()函数,但需要以特定方式: SELECT substri
SELECT points
FROM memberevents AS me
WHERE memberid = memberevents.memberid
ORDER BY id DESC LIMIT 3;
它返回以下内容:
**points**
123
234
146
但我想创建返回如下的SQL(只有一条记录在带“-”号的点处):
有可能吗?试试:
您需要
group\u concat()
函数,但需要以特定方式:
SELECT substring_index(group_concat(points order by id desc separator '-'), '-', 3)
FROM memberevents AS me
WHERE memberid = memberevents.memberid;
orderby
子句模仿原始的orderby
。分隔符
使用所需的分隔符。子字符串_index()
选择前三个元素,类似于限制3
,感谢您的解释让我理解。
SELECT GROUP_CONCAT (P.points SEPARATOR '-')
FROM (
SELECT points
FROM memberevents AS me
WHERE memberid = memberevents.memberid
ORDER BY id DESC LIMIT 3) P
GROUP BY P.points;
SELECT substring_index(group_concat(points order by id desc separator '-'), '-', 3)
FROM memberevents AS me
WHERE memberid = memberevents.memberid;