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与用户表相关。