美文网首页
MySQL JOIN 查询

MySQL JOIN 查询

作者: Tinyspot | 来源:发表于2024-04-17 16:46 被阅读0次

1. MySQL 连接类型

CROSS JOIN (交叉连接 或 笛卡尔积)
交叉连接返回两个集合的笛卡尔积,即表中的所有行的所有可能组合

INNER JOIN(内连接 或 等值连接)
内连接是最常用的连接操作,从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录

LEFT JOIN (左连接)
从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录

RIGHT JOIN (右连接)
从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录

MySQL 目前不支持全连接 FULL OUTER JOIN

2. 交叉连接 CROSS JOIN

交叉连接返回两个集合的笛卡尔积,即两个表中的所有行的所有可能的组合。这相当于内连接没有连接条件或者连接条件永远为真。

如果一个有 m 行的表和另一个有 n 行的表,它们交叉连接将返回 m * n 行数据

The CROSS JOIN keyword returns all records from both tables (table1 and table2).

SELECT column_name(s)
FROM table1
CROSS JOIN table2;

3. 内连接 INNER JOIN

INNER JOIN 返回两个表中满足连接条件的匹配行

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
SELECT * FROM table1 INNER JOIN table2 ON table1.tradeId = table2.tradeId;

-- JOIN(省略INNER)
SELECT * FROM table1 JOIN table2 ON table1.tradeId = table2.tradeId;

-- where 关键词替代
SELECT * FROM table1, table2 WHERE table1.id = table2.id;

4. 左连接:LEFT JOIN

LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

5. 右连接:RIGHT JOIN

RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

6. LEFT JOIN ON AND 和 LEFT JOIN ON WHERE

LEFT JOIN ON AND:在连接过程中直接应用条件,确保即使右侧表无匹配记录,只要左侧表记录满足 ON 子句中的 AND 条件,该记录就会出现在结果集中,保持 LEFT JOIN 的特性。

LEFT JOIN ON WHERE:在连接操作完成后对临时结果集进行过滤,可能导致原本应由 LEFT JOIN 保留的左侧表记录(无匹配右侧记录的情况)因不符合 WHERE 子句条件而被误删,失去 LEFT JOIN 的保留左侧表全记录的特性,结果更接近于 INNER JOIN

参考文档

  • https://www.w3schools.com/mysql/mysql_join.asp
  • MySQL JOIN https://www.sjkjc.com/mysql/join/

相关文章

  • Mysql 多表连接查询 inner join 和 outer

    来源:Mysql 多表连接查询 inner join 和 outer join 的使用 JOIN的含义就如英文单词...

  • MySQL联合查询

    联合查询的关键字是union,连接查询的关键字是join,而在MySQL手册中,join常常被翻译成"联合查询",...

  • 4、多表查询

    Mysql 多表查询 Select * from tablea inner join tableb on tab...

  • Mysql Join查询

    备注文章 https://www.cnblogs.com/logon/p/3748020.html

  • MySQL记录

    1. Join的使用 MySQL 的 JOIN 在两个或多个表中查询数据,Join包括三种: Inner Join...

  • mysql文章汇集

    解决MySQL子查询排序失效的问题Mysql不支持FULL JOIN怎么办?

  • MySQL JOIN 连接查询

    语法 INNER查询等号两边都存在的数据,INNER为缺省值LEFT连接,查询等号左边存在的数据RIGHT连接,查...

  • mysql 联表查询

    mysql 联表查询 JOIN 对比 思路: 1.分析需求,分析查询的字段来自哪些表(连接查询) 2.确定使用哪...

  • join

    MySQL的JOIN(二):JOIN原理MySQL JOIN原理

  • SQL之多表查询

    多表查询 MySQL不支持full join ,可以使用union连接两条查询语句,实现全连接(查询并集)例如:s...

网友评论

      本文标题:MySQL JOIN 查询

      本文链接:https://www.haomeiwen.com/subject/alxexjtx.html