TP5连表查询的join原理分析及注意事项

 注意事项

1.join的第一个参数连接的表一定要全名(加上前缀)

2.SQL中区分左表和左右的方法是:看表在 XX JOIN的左还是右。而在实际应用中,一般第二个参数“=”后右边的是左表。

3.类型

  • INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

图一语句运行结果打印:如下图

扫描二维码关注公众号,回复: 5266223 查看本文章

 问题:查询的是xyb_receipt_order表的订单号,表中只有两条数据,为什么会打印出四条数据呢?

原理分析:这里与类型匹配有关,从左表中拿出一条数据与右表匹配,匹配到就输出,所以会出现重复的情况。假如xyb_receipt_order_goods表中只有两条数据和xyb_receipt_orde表中匹配,那么就只会出现两条数据。

 当使用join链表计算总数时,它是把匹配到的四条数据进行合计总数(会出现重复合计的情况,所以1对多关系的不建议用连表聚合计算),且与聚合函数连用时只会返回一条数据,多条的匹配的字段只会返回第一个匹配的数据(这里是订单号)

1对多的连表聚合查询,为了防止出错,最好分开聚合查询,相关解读:

猜你喜欢

转载自blog.csdn.net/qq_41912505/article/details/86535096