Поиск по сайту:
Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера. (Алан.Дж.Перлис)

Как сравнить последовательные строки в одной таблице в 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, чтобы поддерживать последовательности строк, чтобы применить эту технику.

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

Читать  Как изменить механизм хранения таблицы в MySQL

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

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

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Andrey Fetisov

Добрый день. Спасибо за удобную и лаконичную инфу. Подскажите , при получении доступа к интерфейсу панели управления через su – postgres , система запрашивает пароль. Это , я так понимаю пароль по default ? Подскажите какой он или где найти. Спасибо

D'Fault

sudo passwd postgres

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

Спасибо!

Теперь редакторы в курсе.