【问题标题】:Having With Sub query MySql有子查询MySql
【发布时间】:2016-03-26 22:55:42
【问题描述】:

我想选择发生最多事故的车型。 我正在使用以下查询,但出现语法错误。 请有人告诉我怎么了..

    select car.Model 
    from car 
    join car_accident_involved 
       on car.Car_Registration_ID = car_accident_involved.Car_Registration_ID 
    group by car.Model 
    having MAX(
       select COUNT(Car_Registration_ID) 
       from car_accident_involved
    );

【问题讨论】:

  • 您想知道是什么导致了语法错误,还是查询出了什么问题?
  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更容易复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。

标签: mysql count subquery max having-clause


【解决方案1】:

您可以在这里使用简单的子查询,例如:

select model from car
where car_registration_id = 
 (select car_registration_id
  from car_accident_involved
  group by model 
  order by count(car_registration_id) desc
  limit 1);

【讨论】:

    【解决方案2】:

    HAVING 是 GROUP BY 的条件语句。您的查询在
    中没有任何条件 HAVING 语句,因此出现错误。 A 对我来说,子查询中没有必要。尝试更简单的查询,例如:

    SELECT c.model,COUNT(a.car_registration_id) AS Num_of_accidents FROM car c   
    INNER JOIN car_accident_involved a ON c.car_registration_id=a.car_registration_id  
    GROUP BY c.model ORDER BY Num_of_accidents DESC LIMIT 1;
    

    【讨论】:

      猜你喜欢
      • 2012-07-20
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多