对于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