the*_*cer 0 sql-server subquery
在我的查询浏览器中运行它。我是我得到两个相同的结果。但是还是需要确认。
SELECT
cs.RSCode
, CustomerName
, em.EmailId
FROM
Customer_STN cs
JOIN EmployeeMaster em ON cs.RSCode = em.UserName
LEFT OUTER JOIN Confirmed_Attendance ca ON cs.RSCode = ca.rsCode
WHERE
isConfirmed=1
AND
dateOfConfirmation = '2012-08-25'
Run Code Online (Sandbox Code Playgroud)
第二个查询:
SELECT
cs.RSCode
, CustomerName
, em.EmailId
FROM
Customer_STN cs
JOIN
EmployeeMaster em ON cs.RSCode = em.UserName
WHERE
RSCode NOT IN (
SELECT
rsCode
FROM
Confirmed_Attendance
WHERE
dateOfConfirmation = '2012-08-25'
AND
isConfirmed = 1
)
Run Code Online (Sandbox Code Playgroud)
编辑:添加了WHERERob 注意到的部分。不再那么相似了。
不,但几乎。
join 有四件事要做。我在:SQL Server 中的 JOIN 简化
你的“ NOT IN”(你应该小心,关于NULLs- 尝试使用NOT EXISTS)不会复制任何行。一个LEFT JOIN罐头。但是考虑使用唯一索引/约束/PK,这可以帮助查询优化器将它们视为相同。
总的来说,使用NOT EXISTS而不是LEFT JOIN,因为NOT EXISTS会被视为反半连接,这比 a 稍微好LEFT JOIN / NOT NULL一点。我在以下位置展示:Joins without JOIN
所以......基于我对你的查询的假设,答案是:
几乎。(以及“几乎”如何取决于所涉及的元数据)
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |