2017-04-06 2 views
1

Je ne pouvais pas trouver si c'était possible, y a-t-il une option pour limiter un GROUP_CONCAT dans la fonction MySQL?PHP MySQL GROUP_CONCAT Limite

.: par exemple

GROUP_CONCAT(ColName ORDER BY ColName DESC LIMIT 5) 

Je ne veux pas utiliser une sous-requête car cela ralentirait sérieusement les performances. Je peux découper le tableau plus tard en PHP, mais je me demandais ou MySQL avait déjà une option pour y parvenir dans MySQL.

+1

* "Je ne veux pas utiliser une sous-requête" * - Vous devez faire quelque chose de légèrement bonkers pour appliquer 'LIMIT' à une sous-requête de toute façon: http://stackoverflow.com/questions/7124418/mysql- sous-requête-limite – CD001

+0

@ CD001, je suis conscient de cela merci –

Répondre

9

Non, mais vous pouvez le faire:

SUBSTRING_INDEX(GROUP_CONCAT(ColName ORDER BY ColName DESC), ',', 5) 

Vous voudrez peut-être prêter attention au groupe concat longueur maximale (voir group_concat_max_len), si la chaîne intermédiaire peut être supérieure à 1024 caractères. Vous pouvez changer la valeur par défaut.

+1

vous avez manqué un ')' après desc – Rams

+1

@Rams. . . Je vous remercie. –

+0

@GordonLinoff, excellente solution, merci. Le 1024 sera assez grand, puisque je ne retournerai que 5 entiers. –