1

我有一个带有下表“响应”的数据库,其中包含一个 ID 和一个美国州:

*id   *state
1     CA
2     NY
3     NY
4     CO
5     DE

我正在使用 PHP 输出美国 50 个州中每个州的总行数

所以,我的输出看起来像:
CA: 1
NY: 2
CO: 1
DE: 1
etc...

我知道我可以像这样运行 50 个查询:

SELECT * 
FROM  `responses` 
WHERE state='CA'

我的问题是:有没有更有效的方法来处理这个问题,还是我需要运行 50 个查询?

4

2 回答 2

4

使用GROUP BY子句:

SELECT state, COUNT(*) FROM `responses` GROUP BY state;

使用 GROUP BY有很多很好的教程,它是 SQL 最有用和最强大的特性之一。

于 2012-10-03T20:02:35.837 回答
0

您可以使用 MySQL 的GROUP BY子句,它将按以下方式对所有结果进行分组state

SELECT
    state, COUNT(*) AS count
FROM
    `responses`
GROUP BY
    state;
于 2012-10-03T20:03:52.447 回答