select * from tb,tb2 where tb.name=tb2.name and tb.name='a'
下面是执行计划,
select<----nested loops/inner join<-----table scan(tb)
<-----table scan(tb2)
执行时,是不是 table scan(tb)和table scan(tb2)各自扫描一行,然后在nested loops/inner join匹配一次,然后再返回到table scan,这样循环,直到两个表都都扫描完。
下面是执行计划,
select<----nested loops/inner join<-----table scan(tb)
<-----table scan(tb2)
执行时,是不是 table scan(tb)和table scan(tb2)各自扫描一行,然后在nested loops/inner join匹配一次,然后再返回到table scan,这样循环,直到两个表都都扫描完。
tb2用条件tb2.name='a' 表扫描,得出结果集
然后用tb.name=tb2.name 内连接
再select字段
name val
a 1
a 2
a 3
b 1
b 2
b 3
select (select max(val) from tb where name = a.name) from tb a
能说一下这句的执行过程吗?
子查询得到的是几条数据?
a 3
b 3
这两条数据吗?
还是六条
a 3
a 3
a 3
b 3
b 3
b 3