相关疑难解决方法(0)

使用JOIN时WHERE Clause vs ON

假设我有以下T-SQL代码:

SELECT * FROM Foo f
INNER JOIN Bar b ON b.BarId = f.BarId;
WHERE b.IsApproved = 1;
Run Code Online (Sandbox Code Playgroud)

以下一行也返回相同的行集:

SELECT * FROM Foo f
INNER JOIN Bar b ON (b.IsApproved = 1) AND (b.BarId = f.BarId);
Run Code Online (Sandbox Code Playgroud)

这可能不是这里最好的案例样本,但这两者之间是否有任何性能差异?

sql t-sql sql-server inner-join sql-server-2008-r2

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

WHERE子句中具有条件的LEFT JOIN与ON中的相同LEFT JOIN不等同的原因和原因是什么?

我遇到了一个非常令人困惑的情况,这使我质疑我对SQL Server中的连接的理解.

SELECT t1.f2 
FROM   t1 
LEFT JOIN t2 
ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something 
Run Code Online (Sandbox Code Playgroud)

不会给出相同的结果:

SELECT t1.f2 
FROM   t1 
LEFT JOIN t2 
ON t1.f1 = t2.f1 AND cond2 
WHERE  t2.f3 > something 
Run Code Online (Sandbox Code Playgroud)

可以通过告诉这两个查询是否应该是等价的来取悦某人的帮助吗?

谢谢

sql t-sql sql-server left-join

21
推荐指数
2
解决办法
6万
查看次数

当表左连接时where子句和on子句之间的区别是什么?

SQL1:

select t1.f1,t2.f2 
from t1 
   left join t2 on t1.f1 = t2.f2 and t1.f2=1 and t1.f3=0 
Run Code Online (Sandbox Code Playgroud)

SQL2:

select t1.f1,t2.f2 
from t1 
  left join t2 on t1.f1 = t2.f2 
where t1.f2=1 and t1.f3=0
Run Code Online (Sandbox Code Playgroud)

不同之处在于where和on子句,是否有相同的返回结果?有什么区别?DBMS以同样的方式运行它们吗?谢谢.

sql where-clause

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

首先运行:join或where子句

我有一个查询,其中我使用13 LEFT OUTER JOINS.左边的表有一个大数据,因此执行查询并返回结果需要很长时间.但是当我使用where子句来过滤结果时,它只需要很少的时间.现在我很困惑哪个先执行:产生结果的连接然后where子句从中过滤或者首先过滤结果,得到结果的连接.

sql sql-server-2008

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

LEFT JOIN 中的 Where 与 AND

我通常不会在执行 a 时AND在同一行中使用 an ,因为我过去遇到过问题。我宁愿不进入这个泡菜,而是将任何附加条件放在一个可靠的子句中。但是今天,出于好奇,我很想提出这个问题并一劳永逸地澄清。ONLEFT JOINWHERE

问题LEFT JOIN当我使用“exta”条件时,到底发生了什么?为什么它的行为方式与WHERE?

示例查询

create table #a
(
id int,
name varchar(3)
)


create table #b
(
id int,
name varchar(3)
)

insert into #a
select 1, 'abc'
union
select 2, 'def'
union
select 3, 'ghi'


insert into #b
select 1, 'abc'
union
select 2, 'def'

select * from #a a left join #b b on a.id = b.id 
where a.id = 3

select * …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

2
推荐指数
1
解决办法
2588
查看次数