У меня есть таблица ниже:
Date Msg
2019-04-11 10:14:02.773 AB123 <this is Succec bec next line is CD
2019-04-11 10:14:02.647 CD123
2019-04-11 10:11:03.670 AB123
2019-04-11 10:11:03.500 CD123
2019-04-10 09:53:39.743 AB123 <this is fail bec next line is not CD
2019-04-10 09:52:39.743 AB123
2019-04-10 09:53:39.743 CD123
2019-04-10 09:52:39.743 AB123 <this is fail bec next line is not CD
2019-04-10 09:52:39.743 AB123 <this is fail bec next line is NULL
Я хочу найти Msg top 2 строки AB, и CD успешно. ORDER BY Date
Если у Msg есть AB, продолжение появления не будет работать до тех пор, покаНабор CD 1
CREATE TABLE table1 (
`Id` INTEGER,
`Date` DATETIME,
`Msg` VARCHAR(5)
);
INSERT INTO table1
(`Id`, `Date`, `Msg`)
VALUES
('1', '2019-04-11 10:14:02.773', 'AB123'),
('2', '2019-04-11 10:14:02.647', 'CD123'),
('3', '2019-04-11 10:11:03.670', 'AB123'),
('4', '2019-04-11 10:11:03.500', 'CD123'),
('5', '2019-04-10 09:53:39.743', 'AB123'),
('6', '2019-04-09 09:53:39.587', 'AB123'),
('7', '2019-04-09 09:53:39.001', 'CD123'),
('8', '2019-04-08 07:53:39.587', 'AB123'),
('9', '2019-04-07 08:53:39.111', 'AB123');
SELECT t.Id, t.Date, t.Msg
FROM ( SELECT Id, Date, Msg, LEAD(Msg) OVER (ORDER BY Date DESC) AS NextMsg FROM table1 ) t
WHERE t.Msg LIKE '%AB%' AND t.NextMsg LIKE '%AB%'
ORDER BY t.Date DESC
Мой ожидаемый результат -
Id Date Msg Check
5 2019-04-10 09:53:40 AB123 fail
8 2019-04-08 07:53:40 AB123 fail
9 2019-04-07 08:53:39 AB123 fail
Пример https://www.db -fiddle.com / f / 9B2LzaAvwhFz1QRN53moQU / 4