Количество строк в 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