Количество строк в Oracle SQL Select?
Мне нужно знать, сколько записей было возвращено в select в oracle. В настоящее время я делаю два запроса:
SELECT COUNT(ITEM_ID) FROM MY_ITEMS;
SELECT * FROM MY_ITEMS;
Мне нужно знать COUNT, но я ненавижу делать два запроса. Есть ли способ сделать:
SELECT * FROM MY_ITEMS
а затем узнать, сколько записей там?
Ответы
Ответ 1
Есть ли способ сделать:
SELECT * FROM MY_ITEMS
а затем узнать, сколько записей там?
Если вы хотите, чтобы он находился в этом точном порядке, вы можете получить все записи на клиенте и подсчитать их число (почти все клиентские библиотеки предоставляют для этого функцию).
Вы также можете сделать:
SELECT i.*, COUNT(*) OVER ()
FROM my_items i
который вернет вам счет вместе с каждой записью.
Ответ 2
Если вы работаете в PL/SQL, вы можете использовать псевдо переменную SQL% ROWCOUNT, чтобы получить количество строк, затронутых последней операцией SQL. Мог бы сэкономить вам немного усилий.
Ответ 3
Это должно сделать трюк.
WITH
base AS
(
SELECT *
FROM MY_ITEMS
)
SELECT (SELECT COUNT(*) FROM base) kount,
base.*
FROM base
Ответ 4
Я просто не уверен в псевдонимах таблицы, я не помню в Oracle, если они требуют "AS" или нет. Но это должно сработать.
select mt.*, c.Cntr
from MyTable mt
, (select COUNT(*) as Cntr
from MyTable
) c