mysql如何关联_【MySQL】mysql如何执行关联查询

对于很多初学者不明白MySQL到底是怎样执行关联查询的?下面作简要分析,高手就不用看了。

首先要明确下“关联”的含义,MySQL中的“关联”意义上比较广泛,MySQL认为任何一个查询都是一次“关联”,并不仅仅是一个查询需要到两个表的匹配才叫关联。

MySQL关联执行的策略

MySQL对任何关联操作都执行嵌套循环关联操作,即MySQL先在一个表中循环取出单条数据,然后再嵌套循环到下一个表中寻找匹配的行,依次下去,直到找到所有   表中匹配的行为止。然后根据各个表匹配的行,返回查询中需要的各个列。MySQL会尝试在最后一个关联表中找到所有匹配的行,如果最后一个关联表无法找到更多的行以    后,MySQL返回上一层关联表,看是否能够找到更多匹配的记录,依次类推迭代执行。

如果对上面的定义还不理解的请结合下面这个例子来看就清楚了:

SELECT a.c1, b.c2

FROM a INNER JOIN b USING(c3)

WHERE a.c1 IN (5,6);

以下伪码已经解释得很清楚了,其他查询也可以类似这样分析:

//$a_result: 表示根据in(5,6)条件先在a表中获取结果集

$outer_iterator = $a_result;

//获取第一条记录

$outer_row = $outer_iterator.next();

//进入while循环,读取b表中的数据

while $outer_row

//$b_result: 表示在b表中根据b.c3=$outer_row.c3条件获取的结果集

$inner_iterator = $b_result;

$inner_row = $inner_iterator.next();

while $inner_row

//开时输出结果

echo $outer_row.c1, $inner_row.c2

$inner_row = $inner_iterator.next()

end

$outer_row = $outer_iterator.next()

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值