从sql表中提取行数

问题描述 投票:2回答:2

假设我们有一个SQL请求,例如select * from employees。如果我只想知道行数,则可以通过select count(*) from employees完成。

问题在于,这需要修改SQL请求,而这可能需要进行一些解析。如果请求是字符串SQL_request,我想写一些通用,简单且健壮的内容,例如:select count(*) from (SQL_request),但是结果请求(即select count(*) from (select * from employees))不是正确的请求。

应注意,在某些情况下,我们可以进行这种构造。例如。如果有人要请求的前1000行,则可以执行(SQL_request) limit 1000

是否有一种方法可以封装通用的SQL表请求,以便可以获取行数?

sql encapsulation
2个回答
2
投票

...但结果请求select count(*) from (select * from employees))不是正确的请求...

您正在将查询用作“表表达式”,但您忘记为其分配alias。试试:

select count(*) from (select * from employees)) x

看到结尾处的x


0
投票

取决于数据库。有时,这样做就足够了:

select count(*)
from (<request>) t;

想到以下问题:

  1. 如果“请求”以order by结尾,则某些数据库将不允许它。
  2. 如果“请求”具有CTE,则某些数据库将不允许。
  3. 如果“请求”正在分配变量的值,则某些数据库将不允许它。

这些浮现在脑海。对于许多目的,您可以使用子查询或CTE进行封装。

© www.soinside.com 2019 - 2024. All rights reserved.