MySQL使用连接实现多表检索

Posted Mr_邓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL使用连接实现多表检索相关的知识,希望对你有一定的参考价值。

1.内连接:

  INNER JOIN ,CRROSS JOIN,JOIN在mysql中是等价的连接,会产生笛卡尔积。

连接运算符","(逗号)与之类似,但逗号运算符的优先级与其他连接类型的有所不同。有时,在其他连接类型的都正常的情况下,它会导致语法错误,因此建议尽量避免使用逗号运算符


  其他语法格式:使用ON子句代替WHERE子句。如:SELECT t1.*,t.* FROM t1 INNER JOIN t2 ON t1.i1 = t2.i2

  使用USING()子句。它在概念上类似于ON子句,但要求被连接的列必须同名。如以下的查询语句可以将mytbl1.b连接到mytbl2.b

    SELECT mytbl1.*,mytbl2.* FORM mytbl1 INNER JOIN mytbl2 USING (b);

2.左外连接和右外连接

  左外连接是使用LEFT JOIN,右外连接使用RIGHT JOIN

  LEFT JOIN 的工作方式是:先指定用于对两个表里的行进行匹配的列;接着,当左表的某行右表的某行相匹配时,两行的内容会被选取为一个输出行;当左表的某行在右表里无匹配时,

它仍然会被选取为一个输出行,只是与它连接的是右表的一个假行,其中的每一列都包含NULL。

  在使用时需要注意这样一个问题,即只有将右表里的列全部定义为not null的结果集里的行才没有什么问题。例如,右表里包含值为NULL的列,那么就无法将这些null值与标识未匹配行的那些null值区别开来。

 


以上是关于MySQL使用连接实现多表检索的主要内容,如果未能解决你的问题,请参考以下文章

第4讲:多表联合查询

TypeORM 无关联关系的mysql多表连接查询

MySQL多表连接查询

数据库多表连接查询的实现方式

MySQL 基础 -- 多表关系(一对一1对多(多对一)多对多)多表查询(内连接外连接自连接子查询(嵌套查询)联合查询 union)笛卡儿积

MySQL多表查询总结