MySQL 多行

标签 mysql database rows

我正在学习数据库,遇到了一个问题,我希望有人向我解释一下。 我有一张 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 同时出现在selectgroup by 中。尽管您可以在 group by 中包含 car_id。这是不好的形式。尝试确保 select 中的未聚合列始终位于 group by 中 - 至少在您真正了解使用 SQL 执行的操作之前是这样。

关于MySQL 多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23666728/

相关文章:

javascript - 来自数据库的 PHP 验证

mysql - mysql 的 WHERE 子句中可以使用别名吗?

用于从 WordPress 数据库中删除所有废弃标签的 SQL 查询

php - 信息不显示在数据库中。 XAMPP

SAS:重复行并更改一些变量

mysql - 关于通过 PhpMyAdmin 更新表的问题

php - 数据库、代码(php)、安全测试工具

php - 学说 2 : Find by entity with composite primary key

oracle - 如何找到具有相同(某些 x 值)值重复多次的列?需要返回那些行。

mysql - 选择一列具有不同值但可重复的列