我有两个表ss_test和ss_ceastore_config ss_test有一个名为store_id的字段,它映射到ss_ceastore_config id。 我的ss_test包含服务器条目,告诉它正在使用哪个商店 所以我试图找到哪些商店使用最少次数及其ID。 我有下面的查询。
buttonName.setEnabled(false);
我的内部查询给出了正确的结果,如下所示
select id,
min(server_counts) as server_counts,
isalive
from (select ss_ceastore_config.id ,
count(server_id)as server_counts,
ss_ceastore_config.isalive
from ss_test
right join ss_ceastore_config
on ss_test.store_id = ss_ceastore_config.id
group by store_id
order by id) join_1
所以我想使用min函数
从内部查询输出中选择下面的记录id Ascending server_counts isalive
1 5 1
2 0 1
但是我的外部查询给出了意想不到的结果,如下所示
id Ascending server_counts isalive
2 0 1
为什么这样呢?为什么它为server_counts 0提供id 1?
如何解决此问题?
答案 0 :(得分:2)
select id,
server_counts,
isalive
from (select ss_ceastore_config.id ,
count(server_id)as server_counts,
ss_ceastore_config.isalive
from ss_test
right join ss_ceastore_config
on ss_test.store_id = ss_ceastore_config.id
group by store_id
order by id) join_1
order by server_counts asc
limit 1;
您的原始查询无效,因为您使用SELECT
函数以及MIN()
和id
等非聚合列进行汇总isalive
。我相信MySQL不保证它将返回哪个 id
值以及该列的最小值。
我的策略是按server_counts
按升序返回所有行,然后只返回SELECT
第一行(这是最小值)。