2010-02-04 4 views
4

Сценарий: мне нужно извлечь информацию из базы данных Visual FoxPro; однако при запуске больших запросов против этого есть тенденция заблокировать систему. Чтобы устранить это, мы установили лимиты на то, что отменили запрос, если он прошел определенное время и ограничил количество строк, которые он будет возвращать.SQL - Возвращает ограниченное количество строк, но количество строк в строке

Есть ли способ получить запрос с помощью «SELECT TOP ###», но также вернуть фактическое количество строк, найденных в инструкции? Или это единственный способ запустить запрос дважды? (причина в том, что мы все еще можем выполнить запрос, но информируем пользователя о том, что происходит, т. е. «Первый ### отображается из ### найденных элементов»).

Мое первоначальное исследование состояло в том, чтобы просто добавить «COUNT (*)» к части выбора инструкции, но это не совсем выполнило то, что я искал (оно вернуло правильное количество строк, но только возвратил одну строку для остальных данных).

+0

не Foxpro была прекращена? –

+0

Visual FoxPro 9 SP2 будет поддерживаться Microsoft до 2014 года. –

ответ

2

Если я правильно понял вопрос правильно, вы могли бы сделать подзапрос, но это будет означать, что вы вызовите счета SQL для каждой строки возвращается:

select top 10 field1, field2, (select count(*) from table) as totalrows from table 

Это даст вам топ 10 строк с дополнительной колонкой в каждом названном totrows, содержащем счет всех строк в таблице.

Лично я бы просто запустил отдельный запрос, чтобы получить верхние n строк и счет.

+0

Вот что я понял, но я надеялся, что есть способ сделать это в одном запросе – John

+0

как насчет выбора в разделенной переменной, например @myRowsCount = Select COUNT (*) из таблицы , а затем введите его в запрос: выберите топ 10 field1, field2, @myRowsCount как общие числа из таблицы –

2

Вам нужно будет запустить 2 отдельных SELECT. Один, чтобы получить COUNT строк, возвращаемых запросом, а затем вернуть подмножество записей для определенной страницы.

Вы могли бы оптимизировать это лишь получение общего количества раз, когда первая «страница» извлекается (т.е. не делать весь счетчик для последующих страниц)

Смежные вопросы