首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择...分组依据

选择...分组依据
EN

Stack Overflow用户
提问于 2010-03-05 22:32:39
回答 4查看 5K关注 0票数 2
代码语言:javascript
复制
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表;我的问题是,用一个查询就有可能得到如下结果吗?

代码语言:javascript
复制
[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:我自己的问题是:

代码语言:javascript
复制
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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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聚合所有内容,请执行以下操作

代码语言:javascript
复制
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;

这将为您提供:

代码语言:javascript
复制
7    Pink Lady,1,Granny Smith,1,Fuji 2
9    Granny Smith,1,Pink Lady,1

关于我的评论:如果你有MySQL,这就是你得到的

创建包含确切数据的确切表,然后运行我的查询,我得到以下结果。

代码语言:javascript
复制
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        | 
票数 2
EN

Stack Overflow用户

发布于 2010-03-05 22:37:30

您可以使用group by创建一个这样的列表

代码语言:javascript
复制
select a_id, a_type, count(*)
from AppleTable
group by a_id, a_type
票数 1
EN

Stack Overflow用户

发布于 2010-03-05 22:36:57

代码语言:javascript
复制
SELECT * FROM table group by a_id

使用group by语句,可以按一个或多个列GroupBy Statement对数据进行分组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2387409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档