sql中join on后接条件

JOIN是SQL合并表的核心。
直接使用:SELECT FROM table1 JOIN table2 ON table1 .id = table2 .id。
默认情况下,INNER JOIN 仅返回匹配的行。
使用 LEFT JOIN 保留左表中的所有数据。
使用 RIGHT JOIN 保留右表中的所有数据。
多表连接使用多个ON条件:JOIN table3 ON table1 .id = table3 .id。
连接索引的列可以提高速度。
不要混合类型。
只要正确写出表名和列名即可。

sql语句中的left join on 什么意思啊 如何用

老实说,当我开始理解 LEFT JOIN 时,我一直将 INNER JOIN 与它混淆。
我记得有一次,当我为客户创建报告时,我必须按部门统计员工数量。
结果我用了INNER JOIN,没有分部门的员工直接消失了。
顾客这时候脸都绿了。

有趣的是 LEFT JOIN 的工作方式。
就像一个固执的管家。
必须保留左表(员工)中的所有员工信息。
即使右表(Departments)中没有对应的部门,部门列也会填充NULL。
这就像检查工资单一样。
即使有人没有收到任何钱,您仍然需要提供他们的姓名。
工资栏可以保留为空。

给我印象最深的是,上次处理旧系统数据时,两个表关联的键早已是乱码了。
我只是依靠 LEFT JOIN 来获取我应该拥有的所有员工记录。
尽管部门名称全是“零”,但至少没有漏掉任何一个。
当然,稍后您需要添加逻辑来判断这些空值,否则报告将令人眼花缭乱。

我自己没有运行过这个,但我记得数据很接近。
例如,Oracle和SQL Server在处理大量数据时可能有不同的性能。
为了避免意外,您应该使用 EXPLAIN PLAN 查看执行计划。

图解 SQL 中 JOIN 的各种用法

INNER JOIN:返回具有匹配列值的行。
示例:SELECT FROM 表 1 t1 INNER JOIN 表 2 t2 ON t1 .Col1 =t2 .Col1
LEFT OUTER JOIN:返回左表中的所有行,如果右表中没有匹配项则显示 NULL。
示例:SELECT FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1 .Col1 =t2 .Col1
LEFT OUTER JOIN-WHERE NULL:返回与左表和右表不匹配的所有行。
示例: SELECT FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1 .Col1 =t2 .Col1 其中 t2 .Col1 为 NULL。

RIGHT OUTER JOIN:返回右表中的所有行。
如果左表中没有匹配项,则显示 NULL。
示例:SELECT FROM Table 1 t1 RIGHT OUTER JOIN Table 2 t2 ON t1 .Col1 =t2 .Col1
RIGHT OUTER JOIN-WHERE NULL:返回右表中与左表不匹配的所有行。
示例:SELECT FROM Table 1 t1 RIGHT OUTER JOIN Table 2 t2 ON t1 .Col1 =t2 .Col1 WHERE t1 .Col1 IS NULL。

FULL OUTER JOIN:返回两个表中的所有行,如果没有匹配则显示 NULL。
示例:SELECT FROM Table1 t1 FULL OUTER JOIN Table2 t2 ON t1 .Col1 =t2 .Col1
FULL OUTER JOIN-WHERE NULL:返回两个表中不匹配的所有行。
示例:SELECT FROM 表 1 t1 FULL OUTER JOIN 表 2 t2 ON t1 .Col1 =t2 .Col1 WHERE t1 .Col1 IS NULL OR t2 .Col1 IS NULL。

CROSS JOIN:返回两个表的笛卡尔积。
示例:从表 1 t1 中选择 CROSS JOIN 表 2 t2
这是一个 JOIN 操作。
请务必根据您的查询要求选择适当的 JOIN 类型。