首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按农业分类组

按农业分类组
EN

Stack Overflow用户
提问于 2011-11-15 10:34:21
回答 3查看 119关注 0票数 0

想象一下这张桌子t1

代码语言:javascript
复制
+----------+-------+--------+
| group_id |  name |  age   |
+----------+-------+--------+
|    1     |   A1  |   1    |
|    1     |   A2  |   2    |
|    1     |   A3  |   3    |
|    2     |   B1  |   4    |
+----------+-------+--------+

在MySQL中使用以下查询,

代码语言:javascript
复制
SELECT group_id, name, COUNT(*) FROM t1 GROUP BY group_id

我们得到,

代码语言:javascript
复制
+----------+-------+--------+----------+
| group_id |  name |  age   | COUNT(*) |
+----------+-------+--------+----------+
|    1     |   A1  |   2    |    3     |
|    2     |   B1  |   4    |    1     |
+----------+-------+--------+----------+

正如您在这里看到的,name=A1和age=2的值可能不是来自同一个记录。

我的问题是,如何控制显示nameage列的单个结果,所以内容来自一个记录?有办法对它们进行分类吗?在示例中,按年龄进行反向排序会给出

代码语言:javascript
复制
+----------+-------+--------+----------+
| group_id |  name |  age   | COUNT(*) |
+----------+-------+--------+----------+
|    1     |   A3  |   3    |    3     |
|    2     |   B1  |   4    |    1     |
+----------+-------+--------+----------+

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-11-15 10:40:34

我不知道你为什么说你的查询有效。你也应该按名字分组..。

代码语言:javascript
复制
SELECT group_id, name, COUNT(*) FROM t1 GROUP BY group_id, name

如果你只想得到其中的一个,试着:

代码语言:javascript
复制
SELECT group_id, MIN(name), COUNT(*) FROM t1 GROUP BY group_id
票数 1
EN

Stack Overflow用户

发布于 2011-11-15 10:36:30

代码语言:javascript
复制
SELECT group_id, name, COUNT(*)
FROM t1 
WHERE name IN ( 'xxx', 'yyy', ..., 'zzz' )
GROUP BY group_id
SORT BY COUNT(*)
票数 0
EN

Stack Overflow用户

发布于 2011-11-15 10:37:50

我不知道完全控制,但你可以这样做

代码语言:javascript
复制
SELECT student_name, MIN(test_score), MAX(test_score)
        FROM student
        GROUP BY student_name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8134953

复制
相关文章

相似问题

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