【问题标题】:SELECT query to select based on number of rowsSELECT 查询以根据行数进行选择
【发布时间】:2016-07-14 09:12:34
【问题描述】:

我有一个要求,我想在其中运行带有 where 子句和 group by 的 SELECT 查询。它返回几行,我想从中选择数量最少的行。

例子:

table t1:
host_name   application  type  
host1        app1         0
host2        app2         0
host3        app4         0
host1        app5         0
host2        app6         0
host1        app7         1
host2        app8         1

在上表中,我想获取负载最少的主机。

host1 运行 app1app5app7

host2 运行 app2app6app8

host3 仅运行 app4

因此 host3 的负载最少。当我运行查询时,输出应该是“host3”。只能选择 type=0 的行。

我有解决办法。但是优化了吗?有没有最好的优化方法来实现这一点?

SELECT host_name from (SELECT host_name, min(count) FROM (SELECT host_name, COUNT(*) as count FROM t1 where type=0 group by host_name) as Dup ORDER BY host_name);

提前致谢:)

【问题讨论】:

  • 你总是需要 1 行吗?
  • 是的,我需要一个带有主机名的单行。

标签: mysql sql sqlite


【解决方案1】:

试试这个,它会以apps的数量返回最少的host

select `host_name` 
from t1
where type = 0
group by `host_name`
order by count(`host_name`) ASC
limit 0,1

【讨论】:

  • 谢谢..这有帮助。
  • 这个也优化了。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2014-10-22
  • 2013-10-14
相关资源
最近更新 更多