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

Php 如何使用mysql从表中获取特定项的计数,php,mysql,Php,Mysql,我有两个表数据和用户。我需要得到数据计数->值,并只显示最大计数和用户->名称 我试着问了一些问题,但都错了 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 数据

我有两个表数据和用户。我需要得到数据计数->值,并只显示最大计数和用户->名称

我试着问了一些问题,但都错了

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

还应在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

还应在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

使用
where
而不是
have

使用
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

使用
where
而不是
have

使用
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

您不仅必须按user.name分组,还必须按data.field和data.value分组,然后才能得到所需的结果,请参见()


您不仅必须按user.name分组,还必须按data.field和data.value分组,然后才能得到所需的结果,请参见()


相关:(?)@ZainFarooq,为什么我们需要4个id。data.value与用户表相关。相关:(?)@ZainFarooq,为什么我们需要4个id。data.value与用户表相关。