首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用group by和order by从SQL Server查询的多个表中选择不同的值?

问使用group by和order by从SQL Server查询的多个表中选择不同的值?
EN

Stack Overflow用户
提问于 2010-07-01 14:16:29
回答 1查看 1.1K关注 0票数 0

我正在尝试选择不同的前10个网址,它的计数(网址)和大小从log_table加入其他表格。

我尝试了以下SQL Server查询:

代码语言:javascript
复制
select distinct top 10 
    url, count(url) as hits, 
    size as data 
from log_table 
where log_table.IP in 
             (select IPAddress from IP where IP.IPId in 
                    (select IPId from userIP where userIP.userId in 
                         (select userId from Users)))
group by url, size 
order by hits desc

它没有给我不同的url。但是,当我尝试以下没有大小的查询时,它给出了不同的url和命中结果。

代码语言:javascript
复制
select distinct top 10 
   url, count(url) as hits 
from log_table 
where log_table.IP in 
        (select IPAddress from IP where IP.IPId in 
             (select IPId from userIP where userIP.userId in 
                  (select userId from Users)))
group by url 
order by hits desc

我需要做什么来选择不同的网址,它的命中和大小使用。网址、大小均来自log_table表格。

任何帮助都是非常感谢的。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-07-21 22:21:08

您的第一个查询没有返回不同的url的原因是因为您同时按url和大小进行分组。当您对这两列进行分组时,您将为每个值组合获得一行。因此,如果url "a“的大小为5和10,则将创建两个组,一个为5,一个为10。您必须在size列上使用一些聚合函数来获取某些内容,例如:

代码语言:javascript
复制
select top 10 
   url, count(url) as hits 
   , max(size) as size
from log_table 
where log_table.IP in 
        (select IPAddress from IP where IP.IPId in 
             (select IPId from userIP where userIP.userId in 
                  (select userId from Users)))
group by url 
order by hits desc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3155463

复制
相关文章

相似问题

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