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
。
答案 0 :(得分:2)
选择a_id,a_type,COUNT(*)来自Apple GROUP BY a_id,a_type
这将为您提供一个不同的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 |
答案 1 :(得分:1)
您可以使用group by
:
select a_id, a_type, count(*)
from AppleTable
group by a_id, a_type
答案 2 :(得分:0)
SELECT * FROM table group by a_id
使用group by语句,您可以按一列或多列对数据进行分组 GroupBy Statement
答案 3 :(得分:0)
使用distinct
和group by
这样的
select distinct(a_id), a_type, count(a_type) as total_types
from Apple
group by a_id, a_type;
这样,您就可以获得Apple ID及其类型以及有多少(id,type)结果。