1
votes

Obtenez d'abord le dernier enregistrement, puis le reste dans l'ordre croissant

J'ai une table rôles dont je voudrais récupérer les données dans un ordre spécial.

La table contient des champs id et description .

Je voudrais obtenir la description de la valeur de la dernière ligne EN PREMIER, puis obtenir le reste des données de description dans l'ordre croissant.

Je veux dire récupérer d'abord le dernier identifiant, puis le reste dans l'ordre croissant normal.

La table est référencée par une autre table et ne peut donc pas être réorganisée pour y parvenir.

Est-ce possible?


0 commentaires

3 Réponses :


0
votes

Une option trie à l'aide d'une sous-requête pour trouver la dernière description:

SELECT id, description
FROM yourTable
ORDER BY
    IF(id = MAX(id) OVER (), 0, 1),
    id;

Si vous utilisez MySQL 8 ou une version ultérieure, nous pouvons essayer d'éviter la sous-requête en utilisant MAX code> en tant que fonction analytique:

SELECT id, description
FROM yourTable
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM yourTable) THEN 0 ELSE 1 END,
    id;


0 commentaires

-2
votes

Veuillez essayer ceci.

Declare @tbl Table(
id INT ,
description   Varchar(50),
description22   Varchar(50),
DeptId INT
)

INSERT INTO @tbl VALUES(1,'g1','g2',NULL)
INSERT INTO @tbl VALUES(2,'g2','g3',NULL)
INSERT INTO @tbl VALUES(3,'g3','g1',NULL)


SELECT id, description
FROM @tbl
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END

Exemple: ---

SELECT id, description
FROM @tbl
ORDER BY
CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END


2 commentaires

Veuillez envisager d'ajouter un commentaire si vous votez contre une réponse.


Veuillez voir l'exemple ajouté dans la réponse.



1
votes

Veuillez noter.

   SELECT id, description
    FROM @tbl
    ORDER BY
    CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END


0 commentaires