• 自关联映射:一个表自己关联自己,此时从同一个表中查询,通过起别名将一张表变成两张表,使用join语句。


    实例1:id自关联

    隐式内连接:

     

     

     实例二:编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。返回结果 不要求顺序 。

    查询结果格式如下例:

    Weather
    +----+------------+-------------+
    | id | recordDate | Temperature |
    +----+------------+-------------+
    | 1  | 2015-01-01 | 10          |
    | 2  | 2015-01-02 | 25          |
    | 3  | 2015-01-03 | 20          |
    | 4  | 2015-01-04 | 30          |
    +----+------------+-------------+
    
    Result table:
    +----+
    | id |
    +----+
    | 2  |
    | 4  |
    +----+
    2015-01-02 的温度比前一天高(10 -> 252015-01-04 的温度比前一天高(20 -> 30

    SQL:

    SELECT
        weather.id AS 'Id'
    FROM
        weather
            JOIN
        weather w ON DATEDIFF(weather.date, w.date) = 1
            AND weather.Temperature > w.Temperature;

    因此,我们可以通过将 weather 与自身相结合,并使用 DATEDIFF() 函数自关联

    实例三:超过经理收入的员工

    Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

    +----+-------+--------+-----------+
    | Id | Name  | Salary | ManagerId |
    +----+-------+--------+-----------+
    | 1  | Joe   | 70000  | 3         |
    | 2  | Henry | 80000  | 4         |
    | 3  | Sam   | 60000  | NULL      |
    | 4  | Max   | 90000  | NULL      |
    +----+-------+--------+-----------+

    给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

    +----------+
    | Employee |
    +----------+
    | Joe      |
    +----------+

    SQL:id自关联

    SELECT
         a.NAME AS Employee
    FROM Employee AS a JOIN Employee AS b
         ON a.ManagerId = b.Id
         AND a.Salary > b.Salary;
  • 相关阅读:
    Postman高级应用——流程控制、调试、公共函数、外部数据文件
    python模块之openpyxl
    appium实例1:启动淘宝app
    appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器 转自:上海-悠悠
    appium 环境准备
    python_正则表达式
    接口测试指导方案 转:紫漪
    性能监控工具的配置及使用
    Python_斐波那契数列
    Js new一个函数和直接调用函数的区别
  • 原文地址:https://www.cnblogs.com/zwh0910/p/14396206.html
Copyright © 2020-2023  润新知