按列值对SQL行进行分组而不进行展平

时间:2017-01-11 18:37:03

标签: php mysql

我有以下表结构:

contact_block_key   contact_tab_key     contact_tab_order
==========================================================
test                overview            1
test1               overview            2
test3                                   0
test4                                   0
test5               personal            2
test6               personal            1
test7               family              3
test8               family              1
test9               family              2

我试图找出按contact_tab_key选择和分组行的方法,并能够按contact_tab_order排序。我很大程度上无法做到这一点。我尝试使用:

"select * from table group by contact_tab_key order by contact_tab_order";

group by似乎将行减少为一个。

我也尝试过:

"select * from table order by contact_tab_key,contact_tab_order";

但这似乎按字母数字顺序排列contact_tab_key,然后按contact_tab_order排序。我想要订单overview => personal => family保持战略。

有没有办法保留行数和行顺序,但是根据contact_tab给我分组,我可以按contact_tab_order排序?我已经使用PHP手动执行此操作,但在那里可能是更好的方法在SQL中执行此操作。

所需的输出(跳过 null contact_tab_key):

Array
(
    [overview] => Array
        (
            [0] => test
            [1] => test1
        )

    [personal] => Array
        (
            [0] => test6
            [1] => test5
        )

    [family] => Array
        (
            [0] => test8
            [1] => test9
            [2] => test7
        )
)

0 个答案:

没有答案