首页 > 解决方案 > 在 MySQL 中分组结果并显示在列表中

问题描述

我有一张大桌子:

create table data
(
    id                bigint unsigned auto_increment primary key,
    first              varchar(120)                     null,
    last_           varchar(120)                     null,
    country             varchar(30)                     not null
)
    collate = utf8mb4_unicode_ci;

我需要在列表中显示来自各个国家的人数。

我有典型的 SQL 查询:

public function getAll(): array
    {
        $this->db->query('SELECT * FROM data ORDER by id DESC;');
        return $this->db->resultSet();
    }

但我不知道如何对我的结果进行分组:(

我打印我的结果:

$this->model->getAll()

然后foreach....

结果我需要:

1. 10 users from Poland; 
2. 101 users from Germany; 
3. 99 users from UK....

请帮我

标签: phpmysql

解决方案


您似乎正在寻找简单的聚合:

select country, count(*) no_users from data group by country order by country;

这为您提供了两列,分别是国家和用户数量。然后,您可以在应用程序中生成正确的字符串输出。


推荐阅读