Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 编写一个将3行作为列表返回到一行的sql_Mysql_Sql - Fatal编程技术网

Mysql 编写一个将3行作为列表返回到一行的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

我有以下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 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;