Вывести записи за последние сутки + отступить сутки с условиями

помогите скорректировать запрос

Вывести записи со статусом true у которых за последние сутки не было предела по лимиту (current_limit < day_limit) и тут же все со статусом true которые больше более суток (за прошлые сутки не учитываются, т.е. просто отчет через минус день)

SELECT `id`, `key` FROM `products` WHERE `status` = 1 AND 
(`current_limit` < `day_limit` AND `last_use` > DATE_SUB(now(), INTERVAL 1 DAY)) 
AND
( DATE_SUB(now(), INTERVAL 1 DAY) < `last_use`)

last_use это timestamp

CREATE TABLE `products` (
  `id` int NOT NULL,
  `key` varchar(255) NOT NULL,
  `status` tinyint(1) NOT NULL,
  `day_limit` int NOT NULL,
  `current_limit` int NOT NULL,
  `last_use` timestamp NOT NULL,
  `comment` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

INSERT INTO `products` (`id`, `key`, `status`, `day_limit`, `current_limit`, `last_use`, `comment`) VALUES
(5, 'key1', 1, 30, 0, '2022-07-19 21:00:00', 'test'),
(6, 'key2', 1, 30, 30, '2022-07-21 21:00:00', 'test'),
(7, 'key3', 1, 30, 5, '2022-07-23 07:34:51', 'sdsa');

 
ALTER TABLE `products`
  ADD PRIMARY KEY (`id`);

 
 
ALTER TABLE `products`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
COMMIT;

Ответы (1 шт):

Автор решения: Andrew Nikolaev

Если я всё правильно понял, то нужно AND на OR поменять

SELECT `id`, `key` 
FROM `products` 
WHERE `status` = 1 AND 
(`current_limit` < `day_limit` AND 
`last_use` > DATE_SUB(@CurrentDay, INTERVAL 1 DAY))
OR
(`last_use` < DATE_SUB(@CurrentDay, INTERVAL 1 DAY))
→ Ссылка