MySQL如何在子集内分组

MySQL如何在子集内分组,mysql,Mysql,创建表foo(id、名称、位置) 我想呈现上面的表,如下所示,我应该写什么样的SQL。我无法在子集内有效分组 baz_c, 3 baz_b, 2 baz_a, 1 bar_c, 3 bar_b, 2 bar_a, 1 foo_c, 3 foo_b, 2 foo_a, 1 试试这个: SQL: 输出: mysql> select -> name, position, concat(name , ', ', position) output -> from

创建表foo(id、名称、位置)

我想呈现上面的表,如下所示,我应该写什么样的SQL。我无法在子集内有效分组

baz_c, 3
baz_b, 2
baz_a, 1
bar_c, 3
bar_b, 2
bar_a, 1
foo_c, 3
foo_b, 2
foo_a, 1
试试这个:

SQL:

输出:

mysql> select
    ->     name, position, concat(name , ', ', position) output
    -> from
    ->     foo
    -> order
    ->     by CASE LEFT(name, 3) WHEN 'baz' THEN 1
    ->                           WHEN 'bar' THEN 2
    ->                           WHEN 'foo' THEN 3
    ->        ELSE 0 END,
    ->     position desc;
+-------+----------+----------+
| name  | position | output   |
+-------+----------+----------+
| baz_c |        3 | baz_c, 3 |
| baz_b |        2 | baz_b, 2 |
| baz_a |        1 | baz_a, 1 |
| bar_c |        3 | bar_c, 3 |
| bar_b |        2 | bar_b, 2 |
| bar_a |        1 | bar_a, 1 |
| foo_c |        3 | foo_c, 3 |
| foo_b |        2 | foo_b, 2 |
| foo_a |        1 | foo_a, 1 |
+-------+----------+----------+
9 rows in set (0.00 sec)

你已经尝试过什么?为什么你有重复的ID?这种排序背后的逻辑是什么?没有主键的表,在任何有意义的RDBMS意义上都不是真正的表。因此,这个问题实际上不是关于RDBMS的。因此,它目前的表达方式不值得回答。我修复了主键中的拼写错误,“id”是这里的主键,我需要它按baz、bar、foo顺序排列
select 
    name, position, concat(name , ', ', position) output 
from 
    foo 
order 
    by CASE LEFT(name, 3) WHEN 'baz' THEN 1
                          WHEN 'bar' THEN 2
                          WHEN 'foo' THEN 3
       ELSE 0 END,
    position desc;
mysql> select
    ->     name, position, concat(name , ', ', position) output
    -> from
    ->     foo
    -> order
    ->     by CASE LEFT(name, 3) WHEN 'baz' THEN 1
    ->                           WHEN 'bar' THEN 2
    ->                           WHEN 'foo' THEN 3
    ->        ELSE 0 END,
    ->     position desc;
+-------+----------+----------+
| name  | position | output   |
+-------+----------+----------+
| baz_c |        3 | baz_c, 3 |
| baz_b |        2 | baz_b, 2 |
| baz_a |        1 | baz_a, 1 |
| bar_c |        3 | bar_c, 3 |
| bar_b |        2 | bar_b, 2 |
| bar_a |        1 | bar_a, 1 |
| foo_c |        3 | foo_c, 3 |
| foo_b |        2 | foo_b, 2 |
| foo_a |        1 | foo_a, 1 |
+-------+----------+----------+
9 rows in set (0.00 sec)