选择count()等于特定值的所有用户

时间:2012-06-23 04:09:19

标签: php mysql sql

   $sql = "SELECT * FROM cars WHERE COUNT(brand)='4'";
   $results = mysql_query($sql);
   $rows = mysql_fetch_array($results);
   print_r($rows);

表车有这些列:

id brand     price
0  bmw
1  corvette
2  mercedes
3  bmw
4  bmw
5  toyota
6  bmw
7  honda
8  lotus

这就是我想要做的,从表'cars'返回每个拥有4种不同车型的品牌。在这个例子中,宝马有4个 4种不同的汽车是4个不同的行,具有相同的品牌名称。 所以我试图回应一下品牌名称,其中库存总数为4。 我希望我有道理,任何帮助都会受到赞赏。

编辑:我试过了 SELECT * FROM cars LEFT JOIN用户ON cars.user_id = users.user_id HAVING count(user_id)= 4这不起作用吗?

3 个答案:

答案 0 :(得分:6)

SELECT brand FROM cars GROUP BY brand HAVING COUNT(brand) = 4

为您编辑:

SELECT t1.brand, t2.email 
FROM cars t1  
LEFT JOIN users t2 ON t1.user_id = t2.user_id 
GROUP BY t1.brand HAVING COUNT(t1.brand) = 4

答案 1 :(得分:3)

我认为在查询中你需要使用

SELECT * FROM cars HAVING COUNT(brand)=4;

并根据您的分组进行分组

答案 2 :(得分:1)

您希望一次对多行执行聚合函数(COUNT)。几乎任何时候你想要执行多个计数,你应该考虑GROUP BY。

$sql = "SELECT brand FROM cars GROUP BY brand HAVING COUNT(*) >= 4";

如果您在此查询中执行SELECT *,则每个品牌(可能是ID较低的品牌)将获得1个随机行。

HAVING子句将充当每个组的WHERE。