MYSQL自连接查询

MYSQL自连接查询

1.概念:左表和右表是同一个表,根据连接查询条件查询两个表中的数据.

说明:

​ (1)自连接查询必须对表起别名;

​ 2) 自连接的使用方法和内连接,左连接,右连接完全相同,只不过连接的左表和右表是同一张表.

2.案例

CREATE TABLE sales
(
    month   INT NOT NULL,  -- 月份
    revenue DECIMAL(10, 2) -- 销售额
);

INSERT INTO sales
VALUES (1, 1000),
       (2, 800),
       (3, 1200),
       (4, 2000),
       (5, 1800),
       (6, 5000),
       (7, 3000),
       (8, 2500),
       (9, 1600),
       (10, 2200),
       (11, 900),
       (12, 4600);
示例1:查询每个月的销售额和前一个月的销售额的差值
-- 查询结果字段:月份、当前月销售额、前一个月销售额,当前月销售额和前一个月销售额的差
SELECT
    A.month,
    A.revenue,
    B.revenue,
    A.revenue - B.revenue
FROM sales AS A
LEFT JOIN sales as B
ON A.month = B.month + 1;


示例2:查询截止到每个月的销售额。
-- 查询结果字段:月份,截止当前的累计销售额
SELECT
    A.month,
    sum(B.revenue)
FROM sales as A
JOIN sales as B
ON A.month >= B.month
GROUP BY A.month;