小编Min*_*iMe的帖子

SQL Server查询:SELECT 1 WHERE EXISTS与SELECT TOP 1 1

我需要提供一个标志 - 如果条件不满足则为0,如果是,则为1 - 我可以以两种不同的方式进行:

获取员工ID,名称,如果其他人在子订单中,则为1 - 否则为0:

SELECT e.ID
     , e.Name
     , ISNULL ( ( SELECT TOP 1 1 FROM Employee se WHERE se.ManagerID = e.ID ) , 0 ) AS HasSubordinates 
  FROM Employee e
Run Code Online (Sandbox Code Playgroud)

要么

SELECT e.ID
     , e.Name
     , ISNULL ( ( SELECT 1 WHERE EXISTS ( SELECT * FROM Employee se WHERE se.ManagerID = e.ID ) ) , 0 ) AS HasSubordinates 
  FROM Employee e
Run Code Online (Sandbox Code Playgroud)

你会选择哪个版本?为什么?


更新1


这个怎么样 ?

SELECT o.ID
     , o.Name
     , o.StartDate
     , …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 query-optimization

3
推荐指数
1
解决办法
1万
查看次数