-
INNER JOIN(内连接):
- INNER JOIN 用于从两个表中选取符合条件的记录。只返回两个表中匹配的行,其他的行会被排除。
SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
-
LEFT JOIN(左连接):
- LEFT JOIN 关键字返回左表的所有行和匹配右表的行。如果右表中没有匹配的行,结果集中右表的所有列均为 NULL。
SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
- 左表不一定是驱动表,驱动表的选择通常取决于实际需求。
-
RIGHT JOIN(右连接):
- RIGHT JOIN 关键字返回右表的所有行和匹配左表的行。如果左表中没有匹配的行,结果集中左表的所有列均为 NULL。
SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
- 右表不一定是驱动表,驱动表的选择通常取决于实际需求。
-
FULL JOIN(全外连接):
- FULL JOIN 关键字返回左右表中的所有行。如果没有匹配的行,结果集中的列为 NULL。
SELECT * FROM table1 FULL JOIN table2 ON table1.column = table2.column;
-
SELF JOIN(自连接):
- SELF JOIN 是指在同一表中进行 JOIN 操作。可以通过别名来标识两个相同表的实例。
SELECT a.column, b.column FROM table1 a INNER JOIN table1 b ON a.common_column = b.common_column;
注意事项:
- 使用 LEFT JOIN 时,被驱动表的字段不应该放在 WHERE 子句中进行等值或不等值判断,而应该在 ON 子句中进行,以保持 left join 的语义。
- 在标准的 GROUP BY 语句中,SELECT 部分应该包含聚合函数,如
COUNT()
,否则在一些数据库系统中可能会报错。