首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql Group by子句帮助

Mysql Group by子句帮助
EN

Stack Overflow用户
提问于 2011-09-19 05:30:26
回答 3查看 70关注 0票数 1

$construct = "SELECT * FROM mytable GROUP BY nid HAVING nid>1";

代码语言:javascript
复制
    mytable:
+----+----------+
| id |    nid   |
+----+----------+
|  1 |     null |
|  2 |        1 |
|  3 |        1 |
|  4 |        1 |
|  5 |        2 |
|  6 |        2 |
|  7 |        3 |
|  8 |        3 |
|  9 |        4 |
| 10 |        4 |
-----------------

除nid=1外,如何按nid分组?这是一个简短的例子,但是我的代码并没有得到想要的结果。对于我试图完成的任务,查询是否正确?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-19 05:32:35

这样如何:

代码语言:javascript
复制
SELECT * FROM mytable WHERE nid != 1 ORDER BY nid

GROUP BY导致了一个聚合查询,您只能将其与聚合函数一起使用。例如,SELECT COUNT(*), nid GROUP BY nid会给出具有给定nid的行数。

更新:我不确定我是否理解你的意思,但是这样如何:

代码语言:javascript
复制
(SELECT * FROM mytable WHERE nid = 1 UNION SELECT * FROM mytable WHERE nid != 1 GROUP BY nid) ORDER BY nid

不过,我不确定混合使用聚合和非聚合查询是否有意义--在聚合方面,您最终只会得到该组的一个不确定的代表性行。

票数 1
EN

Stack Overflow用户

发布于 2011-09-19 05:40:21

代码语言:javascript
复制
SELECT count(*), nid FROM mytable where nid <> 1 GROUP BY nid;

代码语言:javascript
复制
SELECT count(*), nid FROM mytable where nid != 1 GROUP BY nid;

不确定您使用的是Oracle还是MySQL。

票数 1
EN

Stack Overflow用户

发布于 2011-09-19 05:51:45

代码语言:javascript
复制
…
GROUP BY CASE nid WHEN 1 THEN -id ELSE nid END
…
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7464607

复制
相关文章

相似问题

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