id - a_id - a_type
---------------------------
1 9 Granny Smith
2 9 Pink Lady
---------------------------
3 3 Pink Lady
4 3 Fuji
5 3 Granny Smith
---------------------------
6 7 Pink Lady
7 7 Fuji
8 7 Fuji
9 7 Granny Smith好的,假设我们有一个像上面这样的Apple sql表;我的问题是,用一个查询就有可能得到如下结果吗?
[0] => Array
(
[0] => a_id: 7
[1] => Pink Lady: 1
[2] => Granny Smith: 1
[3] => Fuji: 2
)
[1] => Array
(
[0] => a_id: 9
[1] => Granny Smith: 1
[2] => Pink Lady: 1
[3] =>
)
...PS:我自己的问题是:
SELECT a_type , a_id ,
COUNT(a_type) AS tot
FROM #apple
GROUP by a_id , a_type
HAVING tot > 0
ORDER BY a_type DESC但这并不能满足我的需求,它会生成多个a_id。
发布于 2010-03-05 22:46:39
从Apple GROUP BY a_id,a_type选择a_id,a_type,COUNT(*)
这将得到一个不同的a_id和a_type元组的列表,但是您仍然需要解析该列表以将相同a_id的元组合并到一个哈希表中。
或者,如果您希望在一个步骤中按a_id聚合所有内容,请执行以下操作
SELECT a_id,GROUP_CONCAT(type_count)
FROM (SELECT a_id,a_type,CONCAT(a_type,",",COUNT(*)) as type_count
FROM Apple GROUP BY a_id,a_type) as x
GROUP BY a_id;这将为您提供:
7 Pink Lady,1,Granny Smith,1,Fuji 2
9 Granny Smith,1,Pink Lady,1关于我的评论:如果你有MySQL,这就是你得到的
创建包含确切数据的确切表,然后运行我的查询,我得到以下结果。
mysql> SELECT a_id,GROUP_CONCAT(type_count) FROM (SELECT a_id,a_type,CONCAT(a_type,",",COUNT(*)) as type_count FROM Apple GROUP BY a_id,a_type) as x GROUP BY a_id;
| 3 | Fuji,1,Granny Smith,1,Pink Lady,1 |
| 7 | Fuji,2,Granny Smith,1,Pink Lady,1 |
| 9 | Granny Smith,1,Pink Lady,1 | 发布于 2010-03-05 22:37:30
您可以使用group by创建一个这样的列表
select a_id, a_type, count(*)
from AppleTable
group by a_id, a_type发布于 2010-03-05 22:36:57
SELECT * FROM table group by a_id使用group by语句,可以按一个或多个列GroupBy Statement对数据进行分组
https://stackoverflow.com/questions/2387409
复制相似问题