简体   繁体   English

如何使用MySQL从表中获取特定项目的计数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM