MySQL如何在子集内分组
创建表foo(id、名称、位置) 我想呈现上面的表,如下所示,我应该写什么样的SQL。我无法在子集内有效分组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
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)