在对可排序天数进行分组时,从group_concat中选择第一行和最后一行

bre*_*req 7 mysql group-concat

再次参考我之前关于组concat Mysql的问题 ,分组并显示其余的行

我需要从该查询获得第一天和最后一天

例如

row 3 from 8,9,10 to first collumn 8, last collumn 10
row 5 from 21,22,23,24,28,29,30 to first collumn 21, last collumn 30
row 6 from 17,21,22,23,24,25 to first collumn 17 last collumn 25

SUBSTR(GROUP_CONCAT(DAY),-1) as fl
Run Code Online (Sandbox Code Playgroud)

但是它给了我最后一个字符,例如,有几行有1或2个字符

1,2,3,22
1,3,6,3
Run Code Online (Sandbox Code Playgroud)

在第一个例子中它给了我2而不是22:/

Th0*_*ike 8

另一个选择(除了迈克尔的解决方案)是使用SUBSTRING_INDEX:

SUBSTRING_INDEX(str,delim,count)
Run Code Online (Sandbox Code Playgroud)

count = 1
Run Code Online (Sandbox Code Playgroud)

你得到第一天,

count=-1
Run Code Online (Sandbox Code Playgroud)

你得到最后一个


Mic*_*ski 3

不要浪费时间尝试解析 的第一个和最后一个GROUP_CONCAT()。相反,只需将MIN()MAX()与 粘在一起即可CONCAT()

SELECT 
  user,
  CONCAT(MIN(DAY)), ',', MAX(DAY)) AS f1
FROM yourtable
GROUP BY user
Run Code Online (Sandbox Code Playgroud)