Php TSQL输出行计数

Php TSQL输出行计数,php,sql,sql-server,Php,Sql,Sql Server,我有一个以XML格式输出结果的存储过程;输出结果都很好 但是,如果可能的话,我需要包括它正在输出的行数 SELECT A.[id], A.[petName], A.[petCaption], B.[petType], C.[FirstName] as ownerFirstName, C.[LastName] as ownerLastName,

我有一个以XML格式输出结果的存储过程;输出结果都很好

但是,如果可能的话,我需要包括它正在输出的行数

 SELECT A.[id],
             A.[petName],
             A.[petCaption],
             B.[petType],
             C.[FirstName] as ownerFirstName,
             C.[LastName] as ownerLastName,
             A.[imageName],

             (
                SELECT CONVERT(varchar(20),sum(transactionAmount), 1) as totalRaised
                FROM petContestTransactionsDonations
                WHERE submissionID = A.[id]
                FOR    XML PATH ('transactionDetails'), TYPE, ELEMENTS
             )
      FROM petContestSubmissions as A
      LEFT OUTER JOIN petContestTypes as B
      ON A.[petType] = B.[id]
      LEFT OUTER JOIN EmpTable as C
      ON A.[empID] = C.EmpID
      LEFT OUTER JOIN petContestTransactionsEntries as E
      ON E.[submissionID] = A.[id]
      WHERE E.[transactionStatus] = 'completed'
     ORDER BY A.[id] 
        OFFSET  @offset ROWS 
        FETCH NEXT @rows ROWS ONLY 
      FOR    XML PATH ('submission'), TYPE, ELEMENTS, ROOT ('root');
我将
偏移量
传递给存储过程,因为我正在使用它进行分页。它将该页的记录限制为X行

即使我说给我接下来的10张唱片,它可能只剩下8张了。这就是我需要回报的;在select语句中找到的总记录数


最好是在存储过程中还是在循环记录的php中这样做

如果需要每行的行数,请包括:

count(*) over () as RowCount
在最外层的
中选择
子句

如果您想先将所有数据读入应用程序,那么就在应用程序层中执行

编辑:

如果需要查询返回的行数,那么最好在应用程序层中执行。您还可以执行以下操作:

select t.*, count(*) over () as RowCOunt
from (<your query here>) t;
选择t.*,count(*)over()作为行计数
从()t;

也许这能满足您的需要。不在同一查询中,但您可以尝试

SELECT @@ROWCOUNT AS RowsAffected

在你的查询之后,你应该马上得到你想要的@@ROWCOUNT是每个会话的,所以只要不结束连接,就应该可以。

Hm,这会忽略偏移量和行数,并获取该表中所有记录的计数。我需要知道在select中返回了多少条记录。我正在使用的插件说:“从第5行开始给我10行。它最多只返回10行,但如果行数较少,我需要知道计数,这样脚本就知道没有更多的数据了。@SBB…我以为你的问题是关于表中记录的数量而不是偏移量。