我正在学习数据库,遇到了一个问题,我希望有人向我解释一下。 我有一张 table 。
car | car_id | car_type
________________________________
bmw | 1 | <bmwcartype1>
bmw | 1 | <bmwcartype2>
bmw | 1 | <bmwcartype3>
bmw | 1 | <bmwcartype4>
mercedes| 2 | <mercedescartype1>
mercedes| 2 | <mercedescartype2>
mercedes| 2 | <mercedescartype3>
lexus | 3 | <lexuscartype1>
lexus | 3 | <lexuscartype2>
lexus | 3 | <lexuscartype3>
lexus | 3 | <lexuscartype4>
lexus | 3 | <lexuscartype5>
我想显示例如汽车和车型数量。我不知道如何解释这一点,但在上表中我只得到了第一行。
选择汽车,COUNT(car) AS number_of_cars FROM cars WHERE car_id = 1
这显示第一行,例如:
car | number_of_cars
bmw | 4
我希望以下行是:
car | number_of_cars
bmw | 4
mercedes | 3
lexus | 5
我怎样才能做到这一点?
最佳答案
您有一个返回一行的聚合查询。需要注意的是,此查询在 MySQL 中有效,但在大多数数据库中会失败。 car
列不在 group by
中。即使您只选择一个值,SQL 引擎通常也不允许这样做(MySQL 是一个异常(exception))。
您想要的查询是:
SELECT car, COUNT(car) AS number_of_cars
FROM cars
group by car;
请注意,car
同时出现在select
和group by
中。尽管您可以在 group by
中包含 car_id
。这是不好的形式。尝试确保 select
中的未聚合列始终位于 group by
中 - 至少在您真正了解使用 SQL 执行的操作之前是这样。
关于MySQL 多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23666728/