0

我有一个查询:

select lr2.event_id as ce
from data_requests as lr2 
group by lr2.event_id, 

返回 88 行。然后我尝试了以下方法:

select count(lr2.event_id) as cc, lr2.event_id as ce 
from data_requests as lr2 
group by lr2.event_id

但是它只返回了 25 行,所以我真的很困惑,其他 63 行去哪里了。

我在sqlfiddle中尝试过,它似乎可以正常工作,但在我的服务器上却没有,所以它必须是一个设置或其他东西......感觉就像服务器在选择所有组结果的子集后计算计数。诡异的。

4

3 回答 3

0

GROUP BY 的功能

SQLGROUP BY子句与SELECT语句配合使用,将相同/相似/相等的数据分组。

演示
如果我有如下表,那么第一个查询将给出与表定义相同的输出:

ce
--
1
2
3
4
5

第二个查询将给出输出,

cc |ce
--- ---
1   1
1   2
1   3
1   4
1   5

因为,全部都distinct在表中,所以我有 5 行!但如果某些ce值是重复的,

ce
--
1
2
1
2
2

然后,第二个查询将输出为:

cc |ce
--- ---
2   1
3   2

在这里,如果我感到震惊,其他 3 行去哪儿了?那我要学习了!当然是用勺子喂了!OP需要学习SQL中的GROUP BY

于 2015-04-30T09:37:38.763 回答
0

我的错,这似乎是一个 phpmyadmin 问题,我在 phpmyadmin 中运行查询,它在每个查询的末尾自动添加了一个限制

于 2015-04-30T09:57:07.243 回答
0

如果你想计算每个lr2.event_id你必须使用的行数count(*),而不是count(lr2.event_id)。请记住,您正在计算行数。

于 2015-04-30T09:24:22.433 回答