2014-01-21 45 views
-1

如何更改在下面的語句使用IN運營商:避免(在運營商)與SQL

select stdId, stdName from students where stdId in (:stdsIds) 
+4

你想改變它 – Tom

+0

我想你應該有這個標記爲甲骨文而不是SQL Server – cBlaine

+0

@cBlaine如果你看一下原來的編輯做什麼,OP寫「我目前正在使用SQL服務器。」我刪除了[tag:oracle]。看起來他們希望將查詢從Oracle轉換爲SQL Server。 – Kermit

回答

1

通常情況下,你能避免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 
      ); 
1

使用EXISTS語句。所以,你的查詢將改成這樣:

select stdId, stdName from students where exists(:stdsIds where stdId = students.stdId) 

編輯:我不使用甲骨文,但我「覺得」語法將是這個樣子:

select stdId, stdName from students where exists(:stdsIds = students.stdId)