Как изменить использование оператора IN
в следующем заявлении:избегать (в операторе) с SQL
select stdId, stdName from students where stdId in (:stdsIds)
Как изменить использование оператора IN
в следующем заявлении:избегать (в операторе) с SQL
select stdId, stdName from students where stdId in (:stdsIds)
Обычно, вы можете избежать IN
когда у вас есть более чем одна таблица
Если у вас есть что-то вроде
SELECT name
FROM students s
WHERE student_id IN (SELECT student_id
FROM courses
WHERE course_id = 1
);
В этом случае, вы можете использовать EXISTS
SELECT name
FROM students s
WHERE EXISTS (SELECT NULL
FROM courses c
WHERE c.student_id = s.student_id
AND c.course_id = 1
);
Используйте EXISTS заявление вместо этого. Таким образом, ваш запрос будет изменить это:
select stdId, stdName from students where exists(:stdsIds where stdId = students.stdId)
EDIT: Я не использую Oracle, но я «думаю» синтаксис будет выглядеть следующим образом:
select stdId, stdName from students where exists(:stdsIds = students.stdId)
, что вы хотите изменить об этом – Tom
я думаю, вы должны иметь это помечено как Oracle вместо SQL Server – cBlaine
@cBlaine Если вы посмотрите на оригинал редактирования, OP писал «Я использую сервер SQL в настоящее время». Я удалил [tag: oracle]. Кажется, они хотели * конвертировать * запрос от Oracle к SQL Server. – Kermit