Oracleのselectで返されたレコードの数を知る必要があります。現在、私は2つのクエリを実行します。
SELECT COUNT(ITEM_ID) FROM MY_ITEMS;
SELECT * FROM MY_ITEMS;
COUNTを知る必要がありますが、2つのクエリを実行するのは嫌です。行う方法はありますか:
SELECT * FROM MY_ITEMS
そして、そこにいくつのレコードがあるかを調べますか?
行う方法はありますか:
SELECT * FROM MY_ITEMS
そして、そこにいくつのレコードがあるかを調べますか?
この正確な順序にしたい場合は、クライアント上のすべてのレコードをフェッチして、その数を数えることができます(ほとんどすべてのクライアントライブラリがそのための関数を提供します)。
次のこともできます。
SELECT i.*, COUNT(*) OVER ()
FROM my_items i
、各レコードとともにカウントを返します。
PL/SQLで作業している場合は、SQL%ROWCOUNT疑似変数を使用して、最後のSQL文の影響を受ける行数を取得できます。労力を節約できるかもしれません。
これでうまくいくはずです。
WITH
base AS
(
SELECT *
FROM MY_ITEMS
)
SELECT (SELECT COUNT(*) FROM base) kount,
base.*
FROM base
テーブルエイリアスについてはよくわかりません。Oracleでは「AS」が必要かどうかは覚えていません。しかし、これはうまくいくはずです。
select mt.*, c.Cntr
from MyTable mt
, (select COUNT(*) as Cntr
from MyTable
) c