0

好的,我正在尝试构建一个查询,该查询将为我提供结果 az 并将它们分组到主要类别中。每个结果应该给我每个类别大约 30 个或更多列表。但是有了这个查询。

select teamName, CONCAT(UCASE(leagueType)) as league
from fmr_teamNames 
group by leagueType 
order by teamName asc

每个类别我只会得到一个列表。我在一定程度上理解这一点,因为我正在按条件使用分组。

当我稍微重新排序查询并按条件删除组时,我得到了所有列表,但它们在 za 中。当期望的目标是类别 az 时,每个类别 az 的内部结果

select teamName, CONCAT(UCASE(leagueType)) as league
from fmr_teamNames
order by leagueType asc

这目前给了我关于类别的 az 和关于结果的 za。所以我有点困惑如何更好地为我的结果形成这个查询,而不必使用像 PHP 这样的外部干预来重新排序所有内容。

4

1 回答 1

1

我认为您将concat函数误认为是group_concatmysql 中的函数。Concat 会将两个字符串附加在一起,而group_concat将行合并在一起。

select teamName, group_concat(UCASE(leagueType)) as league
from fmr_teamNames 
group by teamName 
order by teamName asc

您的查询似乎也在group by聚合列上使用 a 而不是您要识别的唯一列?

例子:

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)
于 2012-09-08T17:47:12.547 回答