SQL выбирает порядок запросов по тому, где в - PullRequest
0 голосов
/ 19 сентября 2019

Как я могу сделать заказ, основываясь на том, что я ввел, где?

пример запроса

select * from student where stud_id in (
'5',
'3',
'4'
)

результат будет

id|   name  |
5 |  John   |
3 |  Erik   |
4 | Michael |

Пожалуйста, помогите мне спасибо.

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Один метод с производной таблицей:

select s.*
from student s cross join
     (values (5, 1), (3, 2), (4, 3)
     ) v(stud_id, ord)
     on v.stud_id = s.stud_in
order by v.ord;

stud_id выглядит как число, поэтому я отбросил одинарные кавычки.Числа должны быть сопоставлены с числами.Если это действительно строка, используйте одинарные кавычки.

0 голосов
/ 19 сентября 2019

Как упоминал Гордон, вам нужно что-то, чтобы обеспечить порядок.Предложение IN не имеет предопределенного порядка, как в таблице.Вместо того, чтобы нумеровать порядок строк самостоятельно, вы можете сделать так, чтобы переменная таблицы делала это так:

DECLARE TABLE @StudentIDs
(
    StudentIDKey int IDENTITY(1,1) PRIMARY KEY,
    StudentID int
);

INSERT @StudentIDs (StudentID)
VALUES 
(5),
(3),
(4);

SELECT *
FROM Student AS s
INNER JOIN @StudentIDs AS id
ON s.StudentID = id.StudentID
ORDER BY id.StudentIDKey;

Это должно быть намного проще, если у вас много значений для работы.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...