Я использую MySQL для хранения финансовых данных и использую данные для создания, помимо прочего, реестров всех транзакций для каждой учетной записи. По соображениям производительности - и чтобы пользователь не был перегружен гигантской таблицей - я разбил результаты на страницы.
Теперь, как часть реестра, я отображаю текущий баланс для учетной записи. Поэтому, если я отображаю 20 транзакций на страницу и отображаю вторую страницу, я использую данные следующим образом:
- Транзакции 0 - 19: Игнорировать их - они более поздние, чем просматриваемая страница.
- Транзакции 20 - 39: Выберите все из них - они будут отображены.
- Транзакции 40 - ??: Суммируйте суммы по ним, чтобы текущий баланс был точным.
Это последний, который меня раздражает. Легко выбрать первые 40 транзакций с помощью предложения LIMIT, но есть ли что-то сопоставимое для всего , но для первых 40? Что-то вроде "LIMIT -40"?
Я знаю, что могу сделать это с COUNT и небольшой математикой, но фактический запрос немного уродлив (несколько JOIN и GROUP BY), поэтому я бы предпочел выдать его как можно меньше раз. И это кажется достаточно полезным для включения в SQL - и я просто не знаю об этом. Кто-нибудь еще?