我需要知道在oracle中的select中返回了多少条记录。目前,我做了两个查询:
SELECT COUNT(ITEM_ID) FROM MY_ITEMS;
SELECT * FROM MY_ITEMS;
我需要知道COUNT但我讨厌做两个查询。有办法吗?
SELECT * FROM MY_ITEMS
然后找出那里有多少条记录?
答案 0 :(得分:31)
有办法吗?
SELECT * FROM MY_ITEMS
然后找出那里有多少条记录?
如果您希望它按照这个确切的顺序,您可以获取客户端上的所有记录并计算它们的数量(几乎所有客户端库都提供了一个功能)。
你也可以这样做:
SELECT i.*, COUNT(*) OVER ()
FROM my_items i
,它会将计数与每条记录一起返回。
答案 1 :(得分:3)
如果您正在使用PL / SQL,则可以使用SQL%ROWCOUNT伪变量来获取受上一个SQL语句影响的行数。可能会省你一些努力。
答案 2 :(得分:2)
这应该可以解决问题。
WITH
base AS
(
SELECT *
FROM MY_ITEMS
)
SELECT (SELECT COUNT(*) FROM base) kount,
base.*
FROM base
答案 3 :(得分:0)
我只是不确定表别名,我不记得在Oracle中是否需要'AS'。但这应该有用。
select mt.*, c.Cntr
from MyTable mt
, (select COUNT(*) as Cntr
from MyTable
) c