8
   $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 种不同汽车的品牌。在此示例中,bmw 有 4 4 辆不同的汽车,即 4 个不同的行具有相同的品牌名称。所以我试图呼应库存总数为 4 的品牌名称。我希望我说得通,任何帮助将不胜感激。

编辑:我尝试 SELECT * FROM cars LEFT JOIN users ON cars.user_id=users.user_id HAVING count(user_id) = 4 这没有任何想法?

4

3 回答 3

12
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
于 2012-06-23T04:12:48.820 回答
3

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

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

并根据您分组的内容进行分组

于 2012-06-23T04:11:29.693 回答
2

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

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

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

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

于 2012-06-23T04:22:03.700 回答