ada*_*101 5 sql t-sql sql-server
如果我像这样将表A加入表B ......
select A.* from A
left outer join B on A.Id = B.aId and @param = 'someValue'
Run Code Online (Sandbox Code Playgroud)
和@param不等于'someValue',SQL Server是否尝试匹配表B中的记录,或者它是否足够聪明以至于知道条件永远不会成立?
因此,在特定的上下文中,您可能会发现当@param具有不同的值时,外部连接表可能永远不会被探测,您不应该依赖它来获得正确性.请注意,探测意味着在表中搜索实际值.始终会检查元数据信息.例如,您不能作弊并要求加入不存在的表.
特别是,不要尝试创建一个单独的查询,其中应该有两个不同的查询(一个连接,一个不连接).