@we1

Чем заменить конструкцию WHERE id>count(id)?

Есть желание засунуть некую функцию в одно запрос на MySQL. Если отбросить лишнее, то получается, что функция подсчета количества строк должна участвовать в формуле расчета с какой строки начать выдачу. Есть два варианта, которые не работают:
SELECT * FROM table WHERE id>count(id) LIMIT 10
SELECT *, count(id) AS c FROM table WHERE id>c LIMIT 10

(на месте сount(id) более сложная конструкция, которая всегда дает результат меньше, чем count(id) - LIMIT)

Такой запрос не работает. Как можно заменить такую конструкцию?

PS
На самом деле, там более сложна формула, но она всего навсего показывает новые строки с каждой новой итерацией счетчика (например по часам или дням) и идет по кругу, чтобы строки, которые выдаются этим запросом не повторялись, пока не пройдут полный круг.
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
LaRN
@LaRN
Senior Developer
Можно расчет count(id) вынести в подзапрос, тогда первый вариант должен сработать.
https://dev.mysql.com/doc/refman/8.0/en/subqueries.html

Если в коде, то как-то так:
SELECT * 
  FROM table 
WHERE id>(SELECT max(id) 
                     FROM table 
                   WHERE date < CURDATE()) 
   LIMIT 10
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Siverius
LIMIT first_row, last_row
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы