Поиск по сайту:
И терпентин на что-нибудь полезен! (К. Прутков).

Как сравнить последовательные строки в одной таблице в MySQL

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
27.12.2019
Как скопировать базу данных MySQL

Резюме : в этой статье мы покажем вам, как сравнивать последовательные строки в одной и той же таблице, используя технику самостоятельного соединения.

Предположим, у вас есть таблица inventory, со структурой, определенной оператором CREATE TABLE, следующим образом:

CREATE TABLE inventory(
id INT AUTO_INCREMENT PRIMARY KEY,
counted_date date NOT NULL,
item_no VARCHAR(20) NOT NULL,
qty int(11) NOT NULL
);

 

В таблице inventory:

  • id – является автоинкрементными колонками.
  • counted_date  – это подсчитанная  дата.
  • item_no  – код товара, размещенный в инвентаре.
  • qty –  накопленное количество в запасе.

Ниже приведены примеры данных таблицы inventory:

INSERT INTO inventory(counted_date,item_no,qty)
VALUES ('2019-12-27','A',20),
('2019-12-27','A',30),
('2019-12-27','A',45),
('2019-12-27','A',80),
('2019-12-27','A',100);

 

Если вы хотите узнать, сколько предметов получено в день для каждого предмета, вам нужно сравнить количество наличных в конкретном дне с его предыдущим днем.

Другими словами, в таблице inventory необходимо сравнить строку с последовательной строкой, чтобы найти разницу.

В MySQL вы можете использовать технику самосоединения (self join) для сравнения последовательных строк как следующий запрос:

SELECT
g1.item_no,
g1.counted_date from_date,
g2.counted_date to_date,
(g2.qty - g1.qty) AS receipt_qty
FROM
inventory g1
INNER JOIN
inventory g2 ON g2.id = g1.id + 1
WHERE
g1.item_no = 'A';

 

Условие в предложении INNER JOIN g2.id = g1.id + 1 позволяет, конечно, сравнить текущую строку со следующей строкой в таблице inventory, предполагая, что в столбцах идентификаторов нет пробелов.

Если вы не можете избежать пробела, вы можете создать дополнительный столбец, например,  seq, чтобы поддерживать последовательности строк, чтобы применить эту технику.

Из этой статьи вы узнали, как сравнивать последовательные строки в одной и той же таблице, используя технику самостоятельного соединения.

Читать  Как получить текущую дату и время в PostgreSQL?

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

два × 4 =

**ссылки nofollow

Рекомендуемое
Блоггер с сайтом, генерирующим низкий трафик, может работать над тем,…

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: