2009-10-05 7 views
0

J'ai une base de données avec une seule table en ce moment, qui contient les champs suivants:Classement par champs en plus du regroupement dans MYSQL- Puis-je utiliser des instructions conditionnelles dans sql?

nom

, Suite

Ceci est ma première mise en œuvre piraté ensemble d'une base de données pour suivre les tests, et je me rends compte que la manière Je les stocke n'est pas efficace, mais comme je l'ai dit, c'est mon premier tour de faire cela.

Certains noms appartiennent à des suites, d'autres non.

Supposons que les données ressemble à ceci:

Name | Suite 
ggg | NULL 
aaa | NULL 
ddd | a_suite 
fff | a_suite 
ccc | some_suite 
eee | some_suite 
bbb | NULL 

ect ..

Si j'exécutez la commande suivante:

select distinct name,suite from webpagetest order by name,suite 

Puis-je obtenir des résultats qui ressemblent à ceci:

Name | Suite 
aaa | NULL 
bbb | NULL 
ccc | some_suite 
ddd | a_suite 
eee | some_suite 
fff | a_suite 
ggg | NULL 

Cependant, ce que j'essaie de faire, c'est d'abord de classer les résultats par suite, ensuite, si le champ de suite n'est pas nul, utilisez le champ suite pour les alphabétiser. Si la suite est nulle, alors les alphabetiser par le nom. Ainsi, les résultats devraient ressembler à ceci:

aaa | NULL 
ddd | a_suite 
fff | a_suite 
bbb | NULL 
ggg | NULL 
ccc | some_suite 
eee | some_suite 

Dans ce cas, il organise par la colonne de nom si rien est présent dans la colonne suite, et si la suite n'est pas nul, il utilisera la valeur suite à la place .

Espérons que ce n'est pas trop mal écrit, et quelqu'un peut comprendre ce que je demande ici.

Merci! Matthew

Répondre

0

Utilisez COALESCE. Il renvoie la première valeur non-nulle des paramètres donnés.

SELECT name, suite 
FROM webpagetest 
ORDER BY COALESCE(suite,name) 
Questions connexes