[英]How to get count of a particular item from table using mysql
I have two table data and user. 我有两个表数据和用户。 I need to get count of data->value and show only greatest count and user->name.
我需要获取data-> value的计数并仅显示最大计数和user-> name。
I tried some query but it's wrong. 我尝试了一些查询,但这是错误的。
SELECT data.value, user.name, data.field, COUNT(*) as count
FROM data
INNER JOIN user
ON data.value = user.id
GROUP BY user.name
HAVING data.field = 'user_id'
ORDER BY count DESC
LIMIT 0,1
DATA 数据
id order_id field value
1 1 user_id 1
2 2 user_id 1
3 3 vehicle_id 1
4 4 user_id 1
5 5 vehicle_id 2
6 6 user_id 2
USER 用户
id name
1 foo
2 joo
3 peter
Current result is 当前结果是
value name field count
1 foo user_id 4
expecting result is 预期的结果是
value name field count
1 foo user_id 3
Use where
instead of having
. 使用
where
的,而不是having
。
With where
you filter the data. 在
where
过滤数据。 But using having
takes all records and filter out complete groups and not single records 但是使用
having
所有记录并过滤出完整的组而不是单个记录
SELECT data.value, user.name, data.field, COUNT(*) as count
FROM data
INNER JOIN user ON data.value = user.id
WHERE data.field = 'user_id'
GROUP BY data.value, user.name, data.field
ORDER BY count DESC
LIMIT 0,1
You must group not only by user.name, but also by data.field and data.value, then you will get the desired result, see ( sqlfiddle ) 您不仅必须按user.name进行分组,还必须按data.field和data.value进行分组,然后才能获得所需的结果,请参阅( sqlfiddle )
SELECT data.value, user.name, data.field, COUNT(*) as count
FROM data
INNER JOIN user ON data.value = user.id
GROUP BY data.value, user.name, data.field
HAVING data.field = 'user_id'
ORDER BY count DESC
LIMIT 0,1
You should add filter ond data.field also 您还应该添加filter ond data.field
SELECT data.value, user.name, data.field, COUNT(*) as count
FROM data
INNER JOIN user
ON data.value = user.id and data.field = 'user_id'
GROUP BY user.name
ORDER BY count DESC
LIMIT 0,1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.