PostgreSQL入门到实战-第二十二弹

本文介绍了PostgreSQL中的表连接操作,包括self-join理论和实战应用,通过实例演示了如何使用自联接查询分层数据及比较同一表中的行。还提供了一个员工管理数据库的示例,展示了如何查找报告关系以及具有相同长度的电影查询。
摘要由CSDN通过智能技术生成

PostgreSQL中表连接操作(六)

使用PostgreSQL自联接技术来比较同一表中的行

官网地址

声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准

https://www.postgresql.org/

PostgreSQL概述

PostgreSQL: 世界上最先进的开源关系数据库。

PostgreSQL中self-join命令理论

  • 自联接是将表联接到自身的常规联接。在实践中,通常使用自联接来查询分层数据或比较同一表中的行。

  • 基础语法

    SELECT select_list
    FROM table_name t1
    INNER JOIN table_name t2 ON join_predicate;
    SELECT select_list
    FROM table_name t1
    LEFT JOIN table_name t2 ON join_predicate;
    

PostgreSQL中self-join命令实战

数据库样例数据来源: https://blog.csdn.net/zwq56693/article/details/137473602

  • 以下语句创建employee表,并在表中插入一些示例数据。

    CREATE TABLE employee (
      employee_id INT PRIMARY KEY, 
      first_name VARCHAR (255) NOT NULL, 
      last_name VARCHAR (255) NOT NULL, 
      manager_id INT, 
      FOREIGN KEY (manager_id) REFERENCES employee (employee_id) ON DELETE CASCADE
    );
    INSERT INTO employee (employee_id, first_name, last_name, manager_id) 
    VALUES 
      (1, 'Windy', 'Hays', NULL), 
      (2, 'Ava', 'Christensen', 1), 
      (3, 'Hassan', 'Conner', 1), 
      (4, 'Anna', 'Reeves', 2), 
      (5, 'Sau', 'Norman', 2), 
      (6, 'Kelsie', 'Hays', 3), 
      (7, 'Tory', 'Goff', 3), 
      (8, 'Salley', 'Lester', 3);
    
    SELECT * FROM employee;
    

在这里插入图片描述

  • 查询使用自联接来查找谁向谁报告
SELECT 
  e.first_name || ' ' || e.last_name employee, 
  m.first_name || ' ' || m.last_name manager 
FROM 
  employee e 
  INNER JOIN employee m ON m.employee_id = e.manager_id 
ORDER BY 
  manager;

在这里插入图片描述

  • 的查询找到具有相同长度的所有成对的电影

    SELECT 
      f1.title, 
      f2.title, 
      f1.length 
    FROM 
      film f1 
      INNER JOIN film f2 ON f1.film_id > f2.film_id 
      AND f1.length = f2.length;
    

在这里插入图片描述

更新计划

欲知后事如何, 请听下回分解

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值