Sql-Server

我可以得到這個 Not in Query 的等效查詢嗎

  • July 21, 2016
SELECT ID FROM dbo.SomeTable
           WHERE ID not in
           (
               SELECT MIN(ID)
               FROM dbo.SomeTable
               GROUP BY SystemNo
           )

由於此查詢需要很長時間(超過一分鐘)才能執行。我猜“IN”是罪魁禍首。我想要一個產生相同結果但時間最有效的查詢。

您不會選擇那些在他們的 systemno 組中最小的 id,因此您只選擇那些在他們的組中具有較低 id 的 id:

SELECT id FROM dbo.SomeTable st1
WHERE EXISTS
 (
   SELECT *
   FROM dbo.SomeTable st2
   WHERE st1.SystemNo = st2.SystemNo AND st2.id < st1.i
 )

引用自:https://dba.stackexchange.com/questions/144520