2012-11-02 2 views
0

Je cette requête ci-dessous:Comment commander un un contenu dans l'ordre croissant dans un champ de base de données (SQL)

SELECT q.QuestionId,GROUP_CONCAT(DISTINCT Answer SEPARATOR '') AS Answer 
    FROM Question q 
    INNER JOIN Answer an ON q.QuestionId = an.QuestionId 
    GROUP BY an.QuestionId 

maintenant où vous pouvez voir dans mon instruction select je ce domaine (DISTINCT Answer SEPARATOR '') AS Answer. Maintenant, supposons que dans la sortie il sort ce ci-dessous:

Answer 

ECB 
FDA 

Je veux que les réponses à commander dans l'ordre alphabétique afin qu'il affiche son comme ci-dessous:

Answer 

BCE 
ADF 

Est-ce que quelqu'un sait ce que je dois changer dans le SQL afin d'y parvenir?

+0

1. S'il vous plaît confirmer que c'est MySQL et re-étiqueter la question. 2. 'DISTINCT .. SEPARATOR' - donc vous avez un GROUP_CONCAT quelque part? 3. Alias ​​la colonne et l'ordre par l'alias, sinon vous allez commander sur la colonne d'origine – RichardTheKiwi

+0

@RichardTheKiwi J'ai ajouté la balise mysql et inclus le GROUP_CONCAT que j'ai raté. Pouvez-vous poster votre réponse sur le point numéro 3. Où puis-je mettre l'alias et que puis-je regrouper? Je veux trier dans la même colonne, pas parmi plusieurs lignes et xQbert mentionné ci-dessous – user1789716

Répondre

0

Il est parfois utile de lire la documentation. MySQL GROUP_CONCAT

SELECT q.QuestionId,GROUP_CONCAT(DISTINCT Answer 
            ORDER BY Answer 
            SEPARATOR '') AS Answer 
    FROM Question q 
    JOIN Answer an ON q.QuestionId = an.QuestionId 
GROUP BY an.QuestionId 

Ne jetez un oeil à l'aide de quelque chose de sensé SÉPARATEUR plutôt que comme « » (rien), sinon vos réponses se brassés ensemble.

1

Vous devriez être en mesure d'ajouter

ORDER BY ANSWER 

à la fin de votre requête pour obtenir les résultats souhaités.

REMARQUE: vous pouvez aliaser la colonne à quelque chose comme COLLATED_ANSWER pour éliminer la confusion.

+1

Je crois que l'auteur demande comment trier dans la même colonne, pas parmi plusieurs lignes. L'exemple semble indiquer ceci. – xQbert

Questions connexes