好的,我正在尝试构建一个查询,它将给出结果a-z,并将它们分组到主要类别中。每个结果应该给我大约30个或更多的每个类别的列表。然而,对于这个查询。
select teamName, CONCAT(UCASE(leagueType)) as league
from fmr_teamNames
group by leagueType
order by teamName asc我将只得到一个单一的清单,每个类别。我在一定程度上理解了这一点,因为我使用的是group by条件。
当我稍微重新排序查询并删除group by条件时,我得到了所有清单,但它们都在z-a中。当期望的目标是类别a-z时,则每个类别a-z的内部结果
select teamName, CONCAT(UCASE(leagueType)) as league
from fmr_teamNames
order by leagueType asc这给了我关于类别的a-z和关于结果per的z-a。所以我有点困惑,不知道如何更好地形成我的结果的查询,而不必使用一些外部干预,如PHP来重新排序所有内容。
发布于 2012-09-09 01:47:13
我想你把mysql中的group_concat函数和concat函数搞混了。Concat会将两个字符串追加在一起,而group_concat会将行合并在一起。
select teamName, group_concat(UCASE(leagueType)) as league
from fmr_teamNames
group by teamName
order by teamName asc您的查询似乎还在聚合列上使用了group by,而不是您试图标识的唯一列?
示例:
mysql> select * from table1;
+---------+------+------+-------------+
| autonum | ID | name | metavalue |
+---------+------+------+-------------+
| 1 | 1 | Rose | Drinker |
| 2 | 1 | Rose | Nice Person |
| 3 | 1 | Rose | Runner |
| 4 | 2 | Gary | Player |
| 5 | 2 | Gary | Funny |
| 6 | 2 | Gary | NULL |
| 7 | 2 | Gary | Smelly |
+---------+------+------+-------------+
7 rows in set (0.00 sec)
mysql> select concat(autonum, ID) from table1 group by ID;
+---------------------+
| concat(autonum, ID) |
+---------------------+
| 11 |
| 42 |
+---------------------+
2 rows in set (0.00 sec)
mysql> select group_concat(autonum, ID) from table1 group by ID;
+---------------------------+
| group_concat(autonum, ID) |
+---------------------------+
| 11,21,31 |
| 42,52,62,72 |
+---------------------------+
2 rows in set (0.01 sec)https://stackoverflow.com/questions/12333054
复制相似问题