7 votes

Sélectionner la première et la dernière ligne de group_concat lors du regroupement de jours triables

En référence à mes questions précédentes sur le groupe concat Mysql encore, grouper par et afficher le reste des lignes

J'ai besoin d'obtenir le premier et le dernier jour de cette requête.

par exemple

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

MAIS il me donne le dernier caractère, et il y a quelques lignes avec 1 ou 2 caractères par exemple

1,2,3,22
1,3,6,3

Dans le premier exemple, le résultat est de 2 et non de 22 :/.

13voto

Th0rndike Points 2871

Une autre option (outre la solution de Michael) consiste à utiliser le SUBSTRING_INDEX :

SUBSTRING_INDEX(str,delim,count)

avec

count = 1

que vous obtenez le premier jour,

avec

count=-1

vous obtenez le dernier

3voto

Michael Berkowski Points 137903

Ne perdez pas votre temps à essayer d'analyser le premier et le dernier mot de la phrase. GROUP_CONCAT() . Au lieu de cela, il suffit de coller le MIN() y MAX() en même temps que CONCAT() .

SELECT 
  user,
  CONCAT(MIN(DAY)), ',', MAX(DAY)) AS f1
FROM yourtable
GROUP BY user

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X