对于MySQL,为什么以下两个sqls都能正常工作?

获得的SQL如下: 对于MySQL,为什么以下两个sqls都能正常工作?

select T1.a from T1 where T1.b in (select T2.b from T2 where T2.b = 'b' and T1.c = 'c') 

select T1.a from T1 where T1.b in (select T2.b from T2 where T2.b = 'b') and T1.c = 'c' 

回答:

第一是:

select T1.a 

from T1

where T1.b in (select T2.b from T2 and T1.c = 'c')

T1参考是到外部查询。这是允许的。事实上,相关的子查询是SQL语言的重要组成部分。

但是,在这种情况下,第二个版本更可取。当过滤逻辑直接在from的表格中时,它更容易理解。

回答:

第二个条件引用表T1这是外部查询中的引用。所以你的两个查询得到执行。你也可以实现你的结果是这样

select T1.a from T1 where T1.c = 'c' and T1.b in (select T2.b from T2 and) 

你的第二个条件总是refrenced到T1所以它的位置并不在查询中关系。

以上是 对于MySQL,为什么以下两个sqls都能正常工作? 的全部内容, 来源链接: utcz.com/qa/263855.html

回到顶部