mysql做关联查询时,一般使用join....on.....的语法。

但还有其它两种语法形式,三者的主要区别在于书写形式,其余方面并无太多差异。

如下三种形式:

select * from trade join sub_trade on trade.order_id = sub_trade.order_id;

select * from trade join sub_trade using(order_id);

select * from trade, sub_trade where trade.order_id=sub_trade.order_id;

join....on... 与 join... using()两种形式mysql在执行时都会处理成第三种。

这两者的区别在于:

join... on....遇到相同名字的列,检索出来时会要求必须指定来源的表,如下所示:

select trade.order_id from trade join sub_trade on trade.order_id = sub_trade.order_id;

join... using()主要用于关联的列名字相同的场景,上述sql可以如下表述:

select order_id from trade join sub_trade using(order_id);

 其会智能的识别名字相同的列,检索重复的列会只输出一个。

 

第三种形式mysql会根据表记录数选择由哪张表作为驱动表,相当于join时,由mysql来自己控制哪张表作为驱动表。

相关文章:

  • 2022-12-23
  • 2021-11-07
  • 2021-12-08
  • 2021-07-30
  • 2021-05-23
  • 2022-02-20
  • 2022-12-23
  • 2021-06-27
猜你喜欢
  • 2021-12-24
  • 2021-08-27
  • 2021-12-07
  • 2022-12-23
  • 2021-11-23
  • 2021-11-23
相关资源
相似解决方案