È possibile utilizzare la funzione CHARINDEX
in un modo strano: cercare l'ID nella lista separati da virgola e ordinare il risultato per la posizione.
Considerate questo elenco per esempio 10,9,5,7,3,8
... sottostringa 10 appare al 1 ° posizione mentre 9 appare al 4 ° . Basta ordinare dalla posizione della sottostringa.
CREATE TABLE Emp
(EmpId int, EmpName varchar(100), Sal int)
;
INSERT INTO Emp
(EmpId, EmpName, Sal)
VALUES
(1, 'John', NULL),
(2, 'Jane', NULL),
(3, 'Smith', NULL),
(4, 'Doe', NULL),
(5, 'Ben', NULL),
(6, 'Steve', NULL),
(7, 'Andrew', NULL),
(8, 'Simon', NULL),
(9, 'Jack', NULL),
(10, 'Allen', NULL)
;
SELECT
EmpId, EmpName, Sal
FROM
Emp
WHERE
EmpId in (10,9,5,7,3,8)
ORDER BY
CHARINDEX(CONCAT(',', EmpId, ','), CONCAT(',', '10,9,5,7,3,8', ','))
;
Risultato:
EmpId | EmpName | Sal
------+---------+-----
10 | Allen | NULL
9 | Jack | NULL
5 | Ben | NULL
7 | Andrew | NULL
3 | Smith | NULL
8 | Simon | NULL
cosa op si ottiene da questa query –
'clausola IN' NON fornisce un modo per modificare l'ordine dei dati. –
Come stai chiamando questo? Potrebbe esserci un modo dinamico per farlo –