web-dev-qa-db-ja.com

Oracle SQL Selectの行数?

Oracleのselectで返されたレコードの数を知る必要があります。現在、私は2つのクエリを実行します。

SELECT COUNT(ITEM_ID) FROM MY_ITEMS;

SELECT * FROM MY_ITEMS;

COUNTを知る必要がありますが、2つのクエリを実行するのは嫌です。行う方法はありますか:

SELECT * FROM MY_ITEMS 

そして、そこにいくつのレコードがあるかを調べますか?

11
twelshesgi

行う方法はありますか:

SELECT * FROM MY_ITEMS 

そして、そこにいくつのレコードがあるかを調べますか?

この正確な順序にしたい場合は、クライアント上のすべてのレコードをフェッチして、その数を数えることができます(ほとんどすべてのクライアントライブラリがそのための関数を提供します)。

次のこともできます。

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

、各レコードとともにカウントを返します。

33
Quassnoi

PL/SQLで作業している場合は、SQL%ROWCOUNT疑似変数を使用して、最後のSQL文の影響を受ける行数を取得できます。労力を節約できるかもしれません。

3
Jim Hudson

これでうまくいくはずです。

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

テーブルエイリアスについてはよくわかりません。Oracleでは「AS」が必要かどうかは覚えていません。しかし、これはうまくいくはずです。

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