SQL 这些是一样的吗?

标签 sql sql-server sql-server-2005

这些是一样的吗?

INNER JOIN dbo.ReportingLevels rl ON e.ei_CompanyID = rl.rl_CompanyId
    AND e.ei_Level = rl.rl_index
    AND EXISTS (SELECT * FROM @ReportingLevelId rlid
                WHERE rlid.[reportLevelName] = rl.[rl_name])    
    AND EXISTS (SELECT * FROM @ReportingLevelId rlid
                WHERE rlid.[companyid] = rl.[rl_CompanyId])

这是第二个。

INNER JOIN dbo.ReportingLevels rl ON e.ei_CompanyID = rl.rl_CompanyId
    AND e.ei_Level = rl.rl_index
    AND EXISTS (SELECT * FROM @ReportingLevelId rlid
                WHERE rlid.[reportLevelName] = rl.[rl_name]
                  AND rlid.[companyid] = rl.[rl_CompanyId]))    

我认为它们是相同的,但是当我使用类似的变体时,有一次我得到了一个奇怪的结果。

最佳答案

不,他们不是。如果表 @ReportingLevelId 中存在 rl_name 和 rl_CompanyId,则第一个将选择一行,但不一定在同一行中。第二个要求这些值出现在同一行中。

关于SQL 这些是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008228/

相关文章:

c# - 在 SP 参数与实体不匹配的 Entity Framework 中使用存储过程

Java IDE 7.1 到 MS SQL 2005 使用PreparedStatement...返回在哪里?

python - Bigquery 根据时间/位置数据(当前行上方/下方的行)获取速度

sql - 使用 RANK OVER PARTITION 比较前一行结果

MySql - 时间安排查询

ios - 如何将多个客户端与非特定平台的云数据库同步

sql-server - 需要改进 SQL 子查询性能

c# - 无法将参数传递给存储过程: parameters not supplied

sql - 如何设计从行创建动态列的查询

sql - 从查询结果中选择?