首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂SQL分页查询

复杂SQL分页查询
EN

Stack Overflow用户
提问于 2011-11-08 08:37:44
回答 2查看 708关注 0票数 0

我正在使用this问题的解决方案对数据进行分页。

我现在需要使用这个解决方案来进行更复杂的查询。即。括号中的SELECT具有联接和聚合函数。

这就是我用来作为参考的解决方案:

代码语言:javascript
复制
;WITH Results_CTE AS
(
    SELECT
        Col1, Col2, ...,
        ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum
    FROM Table
    WHERE <whatever>
)
SELECT *
FROM Results_CTE
WHERE RowNum >= @Offset
AND RowNum < @Offset + @Limit

我需要将这个查询合并到上面的解决方案中:

代码语言:javascript
复制
SELECT users.indicator, COUNT(*) as 'queries' FROM queries
INNER JOIN calls ON queries.call_id = calls.id
INNER JOIN users ON calls.user_id = users.id
WHERE queries.isresolved=0 AND users.indicator='ind1'
GROUP BY users.indicator ORDER BY queries DESC

我怎样才能做到这一点?到目前为止,我已经通过删除ORDER BY queries DESC部件并将其放入行ROW_NUMBER() OVER (ORDER BY ...) AS RowNum来实现它,但是当我这样做时,它不允许我按该列进行排序(“无效列名‘查询’”)。

我需要做些什么才能让它按这个专栏来订购呢?

编辑:使用Server 2008

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-08 08:43:12

尝试按计数(*) DESC排序。它在MySQL上工作..。不确定Server 2008

票数 1
EN

Stack Overflow用户

发布于 2011-11-08 08:49:03

我认为为count(*)列查询您的别名,然后像这样使用

代码语言:javascript
复制
SELECT users.indicator, COUNT(*) as 'queries' FROM queries
INNER JOIN calls ON queries.call_id = calls.id
INNER JOIN users ON calls.user_id = users.id
WHERE queries.isresolved=0 AND users.indicator='ind1'
GROUP BY users.indicator ORDER BY COUNT(*) DESC

http://oops-solution.blogspot.com/2011/11/string-handling-in-javascript.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8047767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档