Поиск по сайту:
Окажите сто услуг, откажите только раз — и будут помнить только отказ (Неизв.).

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

Читать  Когда использовать Self Join в MySQL и примеры

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

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

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

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


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

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

**ссылки nofollow

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

Спасибо!

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