Эквивалент функции FOUND_ROWS() в Postgresql
Я выполняю подкачку в своем приложении, возвращая 20 строк из базы данных за один раз с использованием стандартных слов PostgreSQL OFFSET и LIMIT. Например, чтобы получить страницу 1 страницы:
SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20
Это требование приложения, которое мы также показываем пользователю общее количество записей. Поэтому, очевидно, я могу получить общее количество, выпустив отдельный запрос:
SELECT COUNT(*) FROM table WHERE condition
Но если есть большое количество строк, это не оптимальное решение. Я замечаю, что MySQL имеет очень полезную функцию FOUND_ROWS(), которая делает именно то, что я ищу:
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows
Есть ли эквивалент в PostgreSQL?
Ответы
Ответ 1
PostgreSQL теперь функции окна теперь может использоваться для выполнения многих задач, включая подсчет строк до применения LIMIT.
На основании приведенного выше примера:
SELECT stuff,
count(*) OVER() AS total_count
FROM table
WHERE condition
ORDER BY stuff OFFSET 40 LIMIT 20
Ответ 2
Нет эквивалента.
посмотрите
http://archives.postgresql.org/pgsql-novice/2007-07/msg00108.php