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

时间:2016-08-21 14:20:27

标签: php mysql

我有两个表数据和用户。我需要计算data-> value并且只显示最大的count和user-> name。

我尝试了一些查询,但这是错误的。

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

数据

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

用户

id    name  
 1    foo
 2    joo
 3    peter 

目前的结果是

value   name    field   count   
1       foo     user_id   4 

期待结果

value   name    field   count   
 1      foo     user_id   3

2 个答案:

答案 0 :(得分:1)

使用where代替having 使用where,您可以过滤数据。但是使用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

答案 1 :(得分:0)

你应该添加过滤器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