mysql中jion用法 mysql表连接查询教程

使用 MySQL JOIN 很简单。
INNER JOIN 用法:匹配表 1 和表 2 中的行。
LEFT JOIN 用法:表 1 中的所有行,如果表 2 不匹配则为 NULL。
RIGHT JOIN 用法:表 2 ,表 1 中没有任何行与 NULL 匹配。
FULL OUTER JOIN 用法:表 1 和表 2 中的所有行,如果未找到匹配项则为 NULL(MySQL 使用 LEFT JOIN + RIGHT JOIN 实现它)。

索引是关键。
JOIN 字段必须建立索引。
否则,将扫描整个表(例如 order.customer_id)。

NULL 处理:LEFT JOIN 右表中不匹配的字段为 NULL。
示例:SELECT customer_name, IFULL(order_id, 'No order') FROM customer LEFT JOIN order ON customer_id=orders.customer_id。

解构复杂查询:从简单的 JOIN 开始,然后逐步添加条件。
不要一次写太多。
示例:首先检查 o.customer_id=c.customer_id,然后添加 o.order_date>'2 02 3 -01 -01 '。

实际例子: 多表 JOIN:SELECT o.order_id, c.customer_name FROM order o INNER JOIN customer c ON o.customer_id=c.customer_id。

使用条件连接:SELECT customer_name, COUNT(order_id) FROM customer c LEFT JOIN order o ON c.customer_id=o.customer_id AND o.order_date>'2 02 3 -01 -01 ' GROUP BY customer_id。

替代方案: 子查询:当您只需要单个值或需要检查是否存在时可以使用。
UNION:它不是取代 JOIN,而是组合多个 SELECT 结果集。

最佳实践: 索引:JOIN 字段必须建立索引。
仅选择字段:不使用 SELECT。
控制表数量:至少有4 个JOIN表。
NULL处理:右表不匹配NULL。
视图创建:常用的 JOIN 查询来创建视图。

自己掂量一下。

MySQL连接查询到底什么是驱动表?看了这个你应该就明白了

左链接:左表中的所有数据、右表中匹配的数据以及右表中任何不匹配的数据都显示为空白。

右连接:右表有全部数据,左表匹配数据,左表不匹配数据,用空格表示。

内连接:左右表匹配数据,不匹配数据被忽略。

Driver表:执行计划的顶层表。

有向表:执行计划末尾的表。

优化:小表驱动大表以及驱动表的索引。

算法:简单嵌套循环、索引嵌套循环、基于块的合并嵌套循环。

优先级:当没有索引或有向表索引时,使用interleaved block-based join循环;当有索引时,使用嵌套索引循环。

提醒:搜索时指定字段并避免使用它们。