0

わかりました、結果 az を取得し、それらをプライマリ カテゴリ内にグループ化するクエリを作成しようとしています。各結果には、カテゴリごとに約 30 件以上のリストが表示されるはずです。ただし、このクエリでは。

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

カテゴリごとに 1 つのリストのみを取得します。条件によるグループを使用しているため、ある程度理解しています。

クエリを少し並べ替えて条件によるグループを削除すると、すべてのリストが取得されますが、それらは za にあります。目的のゴールがカテゴリ az の場合、カテゴリ az ごとの内部結果

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

これにより、現在、カテゴリにazが表示され、結果ごとにzaが表示されます。そのため、PHP などの外部介入を使用してすべてを並べ替えることなく、結果に対してこのクエリをより適切に形成する方法について少し混乱しています。

4

1 に答える 1

1

関数をmysqlconcatの関数と間違えていると思います。group_concatConcat は 2 つの文字列を一緒に追加し、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)
于 2012-09-08T17:47:12.547 に答える