【问题标题】:select all users where count() equals a specific value选择 count() 等于特定值的所有用户
【发布时间】:2012-06-23 04:09:19
【问题描述】:
   $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 users ON cars.user_id=users.user_id HAVING count(user_id) = 4 这没有任何想法?

【问题讨论】:

  • 您必须使用having 而不是where。应用 where 子句时,聚合函数的结果尚不可用。
  • 仅供参考:您应该有一个单独的brand 表,其中包含BrandNameBrandID。品牌名称不是一成不变的。
  • 谢谢。我正在尝试离开加入用户表,以便获取添加汽车列表的用户的电子邮件。但它似乎不像它的工作。它返回一个空白页。代码在上面

标签: php mysql sql


【解决方案1】:
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

【讨论】:

  • SELECT * FROM cars LEFT JOIN users ON cars.user_id=users.user_id HAVING count(user_id) = 4 这行不通?
  • @fogsy 1. 您应该提供足够的详细信息来回答问题中的问题。 2.“不工作”不是很有帮助。它可能正在工作。它可能没有做你期望它做的事情。 3. 尝试SELECT brand 而不是*
  • @Hamish 对混乱感到抱歉,我正在尝试对表用户进行 LEFT 连接。 ON car.user_id=users.user_id 。这样我就可以访问 users.email
  • 您在 sql 查询中忘记了 GROUP BY。 sql执行了吗?如果没有,请尝试SELECT brand FROM cars LEFT JOIN users ON cars.user_id=users.user_id GROUP BY brand HAVING count(*) = 4
  • @fogsy 把它放在他的问题中,不要把它埋在一个答案中。
【解决方案2】:

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

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

并根据您的分组方式分组

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2021-12-11
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多