【发布时间】:2014-11-26 10:05:39
【问题描述】:
这是我的查询:
select * from (
select u.id, 'u' as [type], u.firstName, u.lastName, c.name as companyName,
u.lastName + u.firstName + isNull(c.name, '') as sortName
from users as u
left outer join companies as c on c.id = u.company_id
union all
select id, 'c' as [type], null as firstName, null as lastName, name as
companyName, name as sortName
from companies
) as result
where sortName like '%a%'
order by sortName
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY
它从表users 和companies 返回与搜索字符串“a”匹配的10 行。通过偏移/获取,我可以轻松地在我的应用程序中进行分页。但我仍然需要知道的是,数据库中有多少行与搜索字符串“a”匹配而没有获取限制。
我的第一种方法是在结果查询上使用count(*),但这不起作用(我猜是因为联合)。
【问题讨论】:
-
为什么说使用
COUNT(*) OVER()不起作用?这应该在这个查询中起作用----SELECT object_id, Count = COUNT(*) OVER() FROM (SELECT * FROM sys.all_objects UNION ALL SELECT * FROM sys.all_objects) AS t WHERE t.Name LIKE 's%' ORDER BY object_id OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;----计数是正确的 -
我在没有
over()的情况下使用了count(*),但这不起作用。感谢您的帮助! -
啊,我看错了你的问题。乐于助人:)
标签: sql sql-server sql-server-2014