SQL表的几种连接方式

举报
福州司马懿 发表于 2025/01/26 10:15:39 2025/01/26
【摘要】 在SQL中,表的连接方式主要有以下几种: 1. 内连接(INNER JOIN)内连接:返回两个表中匹配的行。如果表中有至少一个匹配,则返回行。语法:SELECT column_name(s)FROM table1INNER JOIN table2ON table1.column_name = table2.column_name; 2. 左外连接(LEFT JOIN)或左连接(LEFT OU...

在SQL中,表的连接方式主要有以下几种:

1. 内连接(INNER JOIN)

  • 内连接:返回两个表中匹配的行。如果表中有至少一个匹配,则返回行。
  • 语法
    SELECT column_name(s)
    FROM table1
    INNER JOIN table2
    ON table1.column_name = table2.column_name;
    

2. 左外连接(LEFT JOIN)或左连接(LEFT OUTER JOIN)

  • 左外连接:返回左表(table1)的所有行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果集中相关列的部分会包含NULL。
  • 语法
    SELECT column_name(s)
    FROM table1
    LEFT JOIN table2
    ON table1.column_name = table2.column_name;
    

3. 右外连接(RIGHT JOIN)或右连接(RIGHT OUTER JOIN)

  • 右外连接:返回右表(table2)的所有行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果集中相关列的部分会包含NULL。
  • 语法
    SELECT column_name(s)
    FROM table1
    RIGHT JOIN table2
    ON table1.column_name = table2.column_name;
    

4. 全外连接(FULL JOIN)或全连接(FULL OUTER JOIN)

  • 全外连接:返回左表和右表中的所有行。当某行在另一表中没有匹配时,相关列的部分会包含NULL。
  • 语法
    SELECT column_name(s)
    FROM table1
    FULL JOIN table2
    ON table1.column_name = table2.column_name;
    

5. 交叉连接(CROSS JOIN)

  • 交叉连接:返回两个表的笛卡尔积,即左表中的每一行与右表中的每一行相组合。
  • 语法
    SELECT column_name(s)
    FROM table1
    CROSS JOIN table2;
    
    或者,不需要ON子句,因为交叉连接不基于任何匹配条件。

6. 自连接(SELF JOIN)

  • 自连接:是一种特殊的内连接,其中一个表与自身进行连接。这在查询需要比较表中的行时很有用。
  • 语法
    SELECT a.column_name, b.column_name
    FROM table1 a, table1 b
    WHERE a.common_column = b.common_column;
    
    在这里,table1 通过别名 ab 与自身连接。
    每种连接方式都有其特定的用途,选择哪种连接方式取决于你想要查询的数据和业务逻辑。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。