2 votes

récupérer un jeu de résultats basé sur l'ordre de la condition de la clause where dans un serveur sql

Considérons le tableau suivant

ColID  Value
  A     100
  B     200
  C     300
  D     400
  E     500

Quelle est la requête permettant de récupérer les valeurs du colID 'C', 'A', 'D' dans le même ordre ?

3voto

DeCaf Points 2990

Pour cette commande particulière, vous devriez faire quelque chose comme :

SELECT * FROM MyTable WHERE ColID IN ('C', 'A', 'D') 
   ORDER BY 
      CASE ColID 
         WHEN 'C' THEN 0 
         WHEN 'A' THEN 1 
         ELSE 2 
      END

3voto

TJR Points 1034

Pourquoi ne pas utiliser CASE ?

SELECT [Value]
FROM testTable
WHERE colID IN ('C','A','D')
ORDER BY (CASE colID WHEN 'C' THEN 1 WHEN 'A' THEN 2 WHEN 'D' THEN 3 END);

1voto

Joe Mancuso Points 1293
Select * from Tablex Where ColId in ('C', 'A', 'D') order by ColId  -- This will yield 'A', 'C', 'D' order

Si vous voulez qu'il revienne dans l'ordre 'C' 'A' 'D', vous devez avoir une autre colonne comme :

ColID Value  Ordinal
A        100    2
B        200    5
C        300    1
D        400    3
E        500    4

Alors, faites-le :

Select * from Tablex Where ColId in ('C', 'A', 'D') order by Ordinal

0voto

Vous pouvez faire quelque chose comme ça :

select * from your table Where ColId in ('C', 'A', 'D')

En ce qui concerne cet ordre particulier, vous ne pouvez pas trier par ColId ou par Value. Un tri par ne vous donnera pas les données dans cet ordre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X