更新时间:2025-09-12 GMT+08:00
分享

连接查询

连接查询也可称为跨表查询,需要关联多个表进行查询。
-- 建表并插入数据。
m_db=# CREATE TABLE emp(
    id int,             --员工编号
    name varchar(20),   --员工姓名 
    deptno int          --所属部门编号
);

m_db=# CREATE TABLE dept(
    deptno int,         --部门编号
    depname varchar(20) --部门名
);

m_db=# INSERT INTO emp VALUES (1, 'Joe', 10), (2, 'Scott', 20), (3, 'Ben', 999);   --Ben还没有确认是哪一个部门所以部门编号是999
m_db=# INSERT INTO dept VALUES (10, 'hr'), (20, 'it'), (30, 'sal');                --sal部门没有员工
  • 内连接(INNER JOIN)
    m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 JOIN dept t2 ON t1.deptno = t2.deptno;
     id | name  | depname 
    ----+-------+---------
      1 | Joe   | hr
      2 | Scott | it
    (2 rows)
  • 左连接(LEFT JOIN)
    m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 LEFT JOIN dept t2 ON t1.deptno = t2.deptno;
     id | name  | depname 
    ----+-------+---------
      1 | Joe   | hr
      2 | Scott | it
      3 | Ben   | 
    (3 rows)
  • 右连接(RIGHT JOIN)
    m_db=# SELECT t1.id,t1.name,t2.depname FROM emp t1 RIGHT JOIN dept t2 ON t1.deptno = t2.deptno;
     id | name  | depname 
    ----+-------+---------
      1 | Joe   | hr
      2 | Scott | it
        |       | sal
    (3 rows)

相关文档