我有这个 mssql 查询:
with RESULT as(select TITLE, URL, ROW_NUMBER() over (order by URL) as SeqValue from WEBSITE
select * from RESULT where SeqValue>=20 and SeqValue<=40
我想知道如果没有 where 语句,这个查询会返回多少条记录。
我尝试使用 select count(*) from RESULT
并尝试使用 @@ROWCOUNT
和许多其他方式,但没有奏效。
我需要选择的 TITLE 和 URL,最后我需要选择的总记录。
例如在 mysql 查询中我有使用 SQL_CALC_FOUND_ROWS
的 prepareStatement :
select SQL_CALC_FOUND_ROWS TITLE, URL from WEBSITE limit ?, ?
and after this select i have:
select FOUND_ROWS()
在此示例中,返回值是 mysql 查询的总记录。 总记录与 LIMIT 相同,没有 LIMIT 指令。 我将数据库从 mysql 转换为 mssql,我对此有疑问。 请帮助我...
最佳答案
我在尝试从 MySQL 迁移到 SQL SERVER 时也有同样的担忧 解决方案是在您的查询中注入(inject):
COUNT (*) OVER () AS ROW_COUNT
ROWCOUNT 出现在结果的所有行中,然后您只需要从第一行结果(如果存在)中检索 ROW_COUNT,并且不要忘记重置结果指针 et Voila;-)。
例如:
select COUNT (*) OVER () AS ROW_COUNT, URL from WEBSITE limit ?, ?
希望对你有帮助
关于mysql - SQL Server 中是否有等效的 SQL_CALC_FOUND_ROWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024824/