Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

SQL Ordre sur la liste des lignes?

Je veux faire un choix dans la table et rationaliser les résultats sur un mot-clé ou une liste de mots clés spécifique. Par exemple, j'ai une telle table:


ID Code
1 Health
2 Freeze
3 Phone
4 Phone
5 Health
6 Hot


donc au lieu de juste faire
Order By asc/desc

, J'aimerais
order by Health, Phone, Freeze, Hot

. C'est possible?
Invité:

Dominique

Confirmation de:

Essayez d'utiliser:


select * from table 
order by FIELD/Code, 'Health', 'Phone', 'Freeze', 'Hot'/

Hannah

Confirmation de:

Vous pouvez rejoindre la table des mots-clés, allumer la colonne de séquence et rationaliser Keyword.Sequence.

Un exemple de table de mots-clés ressemble à ceci:


ID Code Sequence
1 Health 1
2 Freeze 3
3 Phone 2
4 Hot 4


Ensuite, vous pouvez vous joindre.


SELECT *
FROM MyTable INNER JOIN
Keywords ON Keywords.ID = MyTable.KeywordID
ORDER BY Keywords.Sequence


J'espère que cela vous donnera une idée.

Cyprien

Confirmation de:

Voici un piratage terrible:


select * from table
order by /
case Code
when 'Health' then 0
when 'Phone' then 1
when 'Freeze' then 2
when 'Hot' then 3
end
/

Denis

Confirmation de:

Actuellement MySQL a une fonctionnalité appelée
find_in_set//


Utilisez-le comme ceci:


select * from table 
order by find_in_set/Code,'Health','Phone','Freeze','Hot'/

Francis

Confirmation de:

Paire d'options:

Ajouter une colonne OrderCode avec numérique
ordre souhaité

Ajouter une table S. FK à cette table ID
et OrderCode

Florian

Confirmation de:

C'est juste une fois
ORDER BY

Ou quelque chose que vous voulez faire souvent et sur plus de valeurs que indiqué ici?

L'ordre que vous avez donné est arrangé, afin de réaliser ce que vous voulez, vous devez donner un identifiant


SELECT 
ID,
Code,
CASE Code
WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 3
WHEN 'Hot' THEN 4
END As OrderBy
FROM Table
ORDER BY
OrderBy


Ou


SELECT 
ID,
Code
FROM Table
ORDER BY
CASE Code
WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 3
WHEN 'Hot' THEN 4
END


/Je ne connais pas MySQL, Mais ce qui précède travaillera dans SQL Server. Syntaxe MySQL ne sera pas trop différent

/

Si vous voulez probablement le faire souvent, créez une colonne OrderBy Dans la table ou créer une table OrderBy en citant FK Sur cette table et spécifiez le champ numérique dedans OrderBy.

Emile

Confirmation de:

Salut, cette demande SQL Server, Mais je suis sûr que vous pouvez le faire dans MySQL:


SELECT ID, Code
FROM x
ORDER BY
CASE Code WHEN 'Health' THEN 1
WHEN 'Phone' THEN 2
WHEN 'Freeze' THEN 4
WHEN 'Hot' THEN 5
ELSE 6 END ASC
, Code ASC

Dominique

Confirmation de:

Oui Connectez vos résultats avec votre

table de code

Puis commander

code.CodeOrder

EDIT: Explication de l'utilisation de la table de code ...

Créer un code de code séparé /CodeId, Code, CodeOrder/ et rejoindre-le et commandez CodeOrder. C'est mieux que de faire une commande /case.../ hack, Le proposé, comme vous pouvez facilement modifier des codes et des commandes.

Pour répondre aux questions, connectez-vous ou registre