12
votes

Nombre de lignes dans Oracle SQL Select?

J'ai besoin de savoir combien d'enregistrements ont été retournés dans un Select à Oracle. Actuellement, je fais deux questions:

SELECT * FROM MY_ITEMS 


0 commentaires

4 Réponses :


36
votes

Y a-t-il un moyen de faire: p>

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

5 commentaires

Si vous voulez le faire au niveau de la base de données, je suis d'accord avec la deuxième suggestion. Vous pouvez voir un exemple ici: télécharger.oracle .Com / Docs / CD / B28359_01 / Server.111 / B28286 / ...


La performance sage, je pense que cela devrait être la meilleure solution. Merci.


Et si je dois mettre la clause à l'intérieur de dessus (), par exemple, sélectionnez i. *, comptez (*) sur (où prod = 6) de my_items i


@ user1512999: veuillez le poster comme une question distincte.


Essa É UMA DAS COISAS MAIS LINDAS QUE EU JÁ VI! Não Sei Porque A Resposta Não Foi Aceita!



0
votes

Je ne sais pas simplement les alias de table, je ne me souviens pas à Oracle si elles ont besoin de «comme» ou non. Mais cela devrait fonctionner.

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


1 commentaires

L'OP a spécifiquement demandé une méthode qui ne nécessiterait pas deux requêtes; Muant les deux requêtes en une seule, qui fait toujours exactement la même quantité de travail extra-inutile, n'est pas une bonne réponse, IMHO.



2
votes

Si vous travaillez dans PL / SQL, vous pouvez utiliser la pseudo-variable SQL% RowCount pour obtenir le nombre de lignes concernées par la dernière instruction SQL. Pourrait vous faire économiser des efforts.


2 commentaires

Comment évaluer / obtenir cette valeur variable?


Un exemple serait utile.



2
votes

Cela devrait faire le tour.

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


0 commentaires