Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql按键分组返回结果_Mysql_Sql_Pdo - Fatal编程技术网

mysql按键分组返回结果

mysql按键分组返回结果,mysql,sql,pdo,Mysql,Sql,Pdo,我有一张排行榜: +--------+----------+-------------+ | id | star | section | +--------+----------+-------------+ | 1 | 1 | A | | 2 | 0 | A | | 3 | 1 | B | | 4 | 1 |

我有一张排行榜

+--------+----------+-------------+
|   id   |   star   |   section   |
+--------+----------+-------------+
|   1    |    1     |      A      |
|   2    |    0     |      A      |
|   3    |    1     |      B      |
|   4    |    1     |      B      |
|   5    |    0     |      C      |
|   6    |    1     |      C      |
|   7    |    0     |      D      |
|   8    |    1     |      D      |
+--------+----------+-------------+
我想知道这是否可能,我可以有一个回报,其中他们是返回小组

假设我做这个简单的查询
从联盟表中选择id,star,其中star=1“
,然后使用
PDO获取所有

我可以得到以下输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [star] => 1
        )

    [1] => Array
        (
            [id] => 3
            [star] => 1
        )

    [2] => Array
        (
            [id] => 4
            [star] => 1
        )

    [3] => Array
        (
            [id] => 6
            [star] => 1
        )
    [4] => Array
        (
            [id] => 8
            [star] => 1
        )
)
但是,我可以有这个输出,使它更有条理吗

Array
(
    [A] => Array
        (
            [0] => Array 
                (
                  [id] => 1
                  [star] => 1
                )
        )

    [B] => Array
        (
            [0] => Array
                (
                   [id] => 3
                   [star] => 1
                )
            [1] => Array
                (
                   [id] => 4
                   [star] => 1
        )

    [C] => Array
        (
            [0] => Array 
                (
                  [id] => 6
                  [star] => 1
                )
        )

    [D] => Array
        (
            [0] => Array 
                (
                  [id] => 8
                  [star] => 1
                )
        )
)

您必须在代码中这样组织它。
从league_表中选择id、star、section,其中star=1,按section asc排序
将使您的操作更加简单

如果您使用的是php,它可能看起来像这样

foreach ($result as $key=>$row){
    $output[$row['section']][]=$row;
}

这里有一个简单的解决方案,但不是你需要的

SELECT 
    group_concat(id) as IDs,
    star,
    group_concat(section) as Sections
FROM
     league_table
WHERE star = 1
这将为您提供以下输出

IDs        star    Sections
1,3,4,6,8  1       A,B,B,C,D    

如您所见,ID和节的编号相同,因此,如果将逗号分隔的字段(ID、节)转换为数组,则可以使用for循环并访问这两个字段。

use可以使用以下SQL

select group_concat(id), star, section from league_table where star = 1' group by section

//you will get the following result

+--------+----------+-------------+
|   id   |   star   |   section   |
+--------+----------+-------------+
|   1    |    1     |      A      |
|   3,4  |    1     |      B      |
|   6    |    1     |      C      |
|   8    |    1     |      D      |
+--------+----------+-------------+

现在,只要遍历每一行,就可以分解(“,”,id)。星形并不重要,因为所有等于1的值都将被排序,它不会将每个id与其部分分开:(正确,您必须在代码中执行此操作。我在其中的phpGreat point中添加了一个示例。是否可以在
组中添加
SELECT