SQL中的JOIN用法

13 阅读1分钟
  1. INNER JOIN(内连接):

    • INNER JOIN 用于从两个表中选取符合条件的记录。只返回两个表中匹配的行,其他的行会被排除。
    SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;
    
  2. LEFT JOIN(左连接):

    • LEFT JOIN 关键字返回左表的所有行和匹配右表的行。如果右表中没有匹配的行,结果集中右表的所有列均为 NULL。
    SELECT * FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
    
    • 左表不一定是驱动表,驱动表的选择通常取决于实际需求。
  3. RIGHT JOIN(右连接):

    • RIGHT JOIN 关键字返回右表的所有行和匹配左表的行。如果左表中没有匹配的行,结果集中左表的所有列均为 NULL。
    SELECT * FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
    
    • 右表不一定是驱动表,驱动表的选择通常取决于实际需求。
  4. FULL JOIN(全外连接):

    • FULL JOIN 关键字返回左右表中的所有行。如果没有匹配的行,结果集中的列为 NULL。
    SELECT * FROM table1 FULL JOIN table2 ON table1.column = table2.column;
    
  5. 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(),否则在一些数据库系统中可能会报错。