Database
 sql >> база данни >  >> RDS >> Database

Как да сравним два реда от една и съща таблица

Понякога може да се наложи да сравните последователни редове или да сравните всеки ред с предишния ред в таблицата на MySQL. В тази статия ще разгледаме как да сравним два реда от една и съща таблица с помощта на самообединяване. Можете да го използвате, за да сравните последователни редове или да получите разлика между два реда.


Как да сравнявам последователни редове в MySQL

Да приемем, че имате следната таблица продажби (идентификатор, дата_на_поръчка, сума) и колоната сума съдържа общи кумулативни данни за продажбите.

mysql> create table sales(id int auto_increment primary key,
 order_date date, amount int);

mysql> insert into sales(order_date, amount)
     values('2020-10-01',100),
     ('2020-10-02',125),
     ('2020-10-03',140),
     ('2020-10-04',160);

mysql> select * from sales;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2020-10-01 |    100 |
|    2 | 2020-10-02 |    125 |
|    3 | 2020-10-03 |    140 |
|    4 | 2020-10-04 |    160 |
+------+------------+--------+

Бонус за четене:Как да сравним две колони в MySQL

В нашия пример, ако искате да разберете продажбите, направени всеки ден, тогава трябва да сравните стойността на всеки ред с тази на предишния ред. Ето SQL заявката за сравнение на всеки ред с предишния.

mysql> SELECT
         g1.id, g1.order_date,g1.amount,
         (g2.amount - g1.amount) AS daily_amount
     FROM
         sales g1 INNER JOIN sales g2 ON g2.id = g1.id + 1;
+------+------------+--------+--------------+
| id   | order_date | amount | daily_amount |
+------+------------+--------+--------------+
|    1 | 2020-10-01 |    100 |           25 |
|    2 | 2020-10-02 |    125 |           15 |
|    3 | 2020-10-03 |    140 |           20 |
+------+------------+--------+--------------+

В горната заявка свързваме таблицата за продажби със самата нея, като използваме условие INNER JOIN g2.id=g1.id + 1, което ви позволява да сравните всеки ред с предишния му ред.

Бонус четене:Как да получите всеки N-ти ред в MySQL

Моля, имайте предвид, че това условие зависи от факта, че колоната ни за идентификация има последователни числа. Повечето таблици имат колона с първичен ключ с автоматично увеличение, така че трябва да работи в повечето случаи. Ако се различават с друга константа, можете да промените съответно условието INNER JOIN.

Надяваме се, че сега можете лесно да сравните два реда в една и съща таблица в MySQL.

Ubiq улеснява визуализирането на данни и наблюдението им в табла за управление в реално време. Опитайте Ubiq безплатно.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавете колона към таблица в SQL

  2. Създаване на ODBC свързан сървър без конфигуриране на източник на данни

  3. Проектиране на база данни за регистриране на одит

  4. Свързване на 32-битово приложение към jBASE

  5. Как да използвате Prisma