PHP group mysql select by 两列

标签 php mysql sql group-by

我在 MySQL 中有这个表:

table

我想按浏览器和版本对选择的结果进行分组。

想要的输出:

Array
(
    [firefox 3.0] => 2
    [chrome 24.0] => 1
    [ie 9.0] => 2
    [ie 10.0] => 1
)

问题:如何分组选择得到想要的输出?

注意:表格可以包含更多版本的浏览器,因此数组会扩展。

我的尝试:

PHP:

public function get_browsers() {
    $query = "
        SELECT browser, COUNT(browser) AS num 
        FROM table
        GROUP BY browser 
        ORDER BY browser ASC
        ";
    $select = mysqli_query($this->c, $query);
    while ($row = mysqli_fetch_array($select)) {
        $data[$row['browser']] = (int) $row['num'];
    }
    return $data;
}

当前输出:

Array
(
    [firefox] => 2
    [chrome] => 1
    [ie] => 3
)

最佳答案

public function get_browsers() {
    $query = '
        SELECT   browser, version, COUNT(*) AS num 
        FROM     table
        GROUP BY browser, version
    ';
    $select = mysqli_query($this->c, $query);
    while ($row = mysqli_fetch_array($select)) {
        $data[$row['browser'].' '.$row['version']] = (int) $row['num'];
    }
    return $data;
}

关于PHP group mysql select by 两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21400606/

相关文章:

php curl 错误 : Failure when receiving data from the peer

javascript - 使用 PHP 从 Ionic 框架发布数据

mysql - 如何添加或更新子行: a foreign key constraint fails

sql - Oracle 中的子字符串索引

php - 不应该使用公开的自动递增 PK 吗?

php - 嵌入式表单生成数组而不是 ArrayCollection

mysql - 连接.sync({强制: false}) creates unwanted table

mysql - 在 MySQL 中逐行使用 SUM()

php - 在 PHP 中将 DateTime 格式显示为可读字符串

java - SQL 中用户提供的排序