2014-01-09 13 views
8

Ist es möglich, Komma getrennten Wert der ersten n Zeilen (sagen wir 10 Zeilen einer Spalte) mit Mysql?Mysql GROUP_CONCAT der ersten n Zeilen

Ich habe eine Abfrage, um Daten größer als CURDATE() zu erhalten. Und es wird mehr als 100 Zeilen Ergebnis zurückgeben. Was ich will ist, GROUP_CONCAT die ersten 10 Zeilen des Ergebnisses.

Dies ist meine Frage:

SELECT GROUP_CONCAT(user_id) AS userids 
FROM user_tasks 
WHERE due_date > CURDATE() LIMIT 10; 

sind immer ganze Zeilen. Ich brauche die ersten 10 Reihen nur

Dank

+1

Welches Problem sind Sie mit deinem aktuellen Code haben? Kannst du es posten? – Clive

+1

Fügen Sie einfach ein 'SUBSTRING_INDEX' hinzu http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_substring-index und ein' order by' http://dev.mysql.com/ doc/refman/5.6/de/group-by-functions.html # function_group-concat zu deinem 'group_concat' –

+0

Hallo Clive, aktualisiert mit meinem Code –

Antwort

13

Verwenden Unterabfrage:

SELECT 
    GROUP_CONCAT(user_id) AS userids 
FROM 
    (SELECT 
    user_id 
    FROM 
    user_tasks 
    WHERE due_date > CURDATE() 
    LIMIT 10) AS users 
+0

Danke Alma, es funktioniert. Ich habe versucht mit Unterabfrage, aber dann mit wo Bedingung. –

6

Sie müssen eine Sub-Abfrage verwenden, um die Grenze zu verhängen, wie folgt aus:

SELECT GROUP_CONCAT(sub_query.user_id) AS userids 
FROM 
(
    SELECT user_id 
    FROM user_tasks 
    WHERE due_date > CURDATE() 
    LIMIT 10 
) sub_query