2016-08-23 1 views
0
id 
---- 
0 
2 
1 
3 
7 
1 
6 
3 
1 

Je veux trier la valeur id dans l'ordre décroissant en utilisant ORDER BY dans MySQL.Toujours en bas si id = '3' (utilisez `ORDER BY` MySQL)

Mais si la valeur id est égale à 3, mettez-la toujours en bas.

Le résultat sera de:

id 
---- 
7 
6 
2 
1 
1 
1 
0 
3 
3 

Comment dois-je faire?

Mon essai:

SELECT id FROM `table` ORDER BY CASE WHEN id='3' THEN ??? END, id DESC 

Quelles devraient être les points d'interrogation être?

Répondre

2

En plus de la réponse de Tim Je voudrais jouer avec valeur booléenne:

SELECT 
    id 
FROM 
    `table` 
ORDER BY (id = 3), id DESC 

Depuis l'expression MySQL boolean résol ves en 0/1 afin que nous puissions jouer avec cela dans ce scénario particulier.

Regardez quand le id is equal to 3 puis la commande par ressemble à ORDER BY 1, <id> DESC.

Et pour tout autre identifiant autre que il ressemble ORDER BY 0, <id> DESC

Demo ici:

SQLFiddle

2

D'abord, par une expression CASE qui force les valeurs d'ID de 3 vers le bas, puis l'ordre décroissant par l'ID lui-même.

SELECT id 
FROM yourTable 
ORDER BY CASE WHEN id = 3 THEN 1 ELSE 0 END, 
     id DESC 

Demo ici:

SQLFiddle

0

Cela fonctionne pour vous:

SELECT * FROM tablename ORDER BY id = '3', id DESC