2010-05-21 31 views
11

Necesito saber cuántos registros se devolvieron en un oráculo de selección. Actualmente, realizo dos consultas:Número de filas en Oracle SQL Select?

SELECT COUNT(ITEM_ID) FROM MY_ITEMS; 

SELECT * FROM MY_ITEMS; 

Necesito saber el COUNT pero odio hacer dos consultas. ¿Hay alguna forma de hacerlo:

SELECT * FROM MY_ITEMS 

y luego averiguar cuántos registros hay?

Respuesta

28

¿Hay una manera de hacerlo:

SELECT * FROM MY_ITEMS 

y luego averiguar cuántos registros están ahí?

Si desea que esté en este orden exacto, puede buscar todos los registros en el cliente y contar su número (casi todas las bibliotecas de clientes proporcionan una función para eso).

También puede hacer:

SELECT i.*, COUNT(*) OVER() 
FROM my_items i 

, que devolverá el conteo junto con cada registro.

+0

Si desea hacer esto a nivel de base de datos, estoy de acuerdo con la segunda sugerencia. Puede ver un ejemplo aquí: http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/functions032.htm#i82697 – Intelekshual

+0

+1, ¡esa es una forma inteligente de hacerlo! :) – FrustratedWithFormsDesigner

+0

ENORME gracias !!! Sé que fue publicado hace 2 años, ¡pero realmente me ayudó! – Slim

0

No estoy seguro de los alias de tabla, no recuerdo en Oracle si requieren 'AS' o no. Pero esto debería funcionar

select mt.*, c.Cntr 
    from MyTable mt 
     , (select COUNT(*) as Cntr 
       from MyTable 
      ) c 
+1

El OP solicitó específicamente un método que no requeriría dos consultas; confundir las dos consultas en una sola, que todavía hace exactamente la misma cantidad de trabajo extra innecesario, no es una gran respuesta, en mi humilde opinión. –

3

Si está trabajando en PL/SQL, puede utilizar el SQL% ROWCOUNT pseudo-variable para obtener el número de filas afectadas por la última sentencia SQL. Podría ahorrarte un poco de esfuerzo.

+1

cómo evaluar/obtener este valor de variable? –

2

Esto debería hacer el truco.

WITH 
base AS 
(
    SELECT * 
    FROM MY_ITEMS 
) 
SELECT (SELECT COUNT(*) FROM base) kount, 
     base.* 
FROM base 
Cuestiones relacionadas