Mysql GROUPBY子句帮助
$construct=nid>1的nid从mytable组中选择*Mysql GROUPBY子句帮助,mysql,group-by,Mysql,Group By,$construct=nid>1的nid从mytable组中选择* mytable: +----+----------+ | id | nid | +----+----------+ | 1 | null | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 5 | 2 | | 6 | 2 | | 7 | 3 | | 8 | 3 | | 9
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分组?这是一个简单的例子,但我的代码没有得到预期的结果。对于我要完成的任务,该查询是否正确?这一点如何:
SELECT * FROM mytable WHERE nid != 1 ORDER BY nid
GROUPBY导致聚合查询,您只能合理地使用聚合函数。例如,选择COUNT*,nid GROUP BY nid将为您提供具有给定nid的行数
更新:我不确定我是否理解你,但是这个怎么样:
(SELECT * FROM mytable WHERE nid = 1 UNION SELECT * FROM mytable WHERE nid != 1 GROUP BY nid) ORDER BY nid
不过,我不确定混合使用聚合查询和非聚合查询是否有意义——在聚合端,您只会得到该组中不确定的代表行
SELECT count(*), nid FROM mytable where nid <> 1 GROUP BY nid;
不确定您使用的是Oracle还是MySQL。我需要nid=1的结果,但我想对其他匹配的nid进行分组s@user:在某个范围内分组而不是在另一个范围内分组是没有意义的,因为一个查询是聚合,而另一个查询不是聚合。有两个单独的查询不是更合适吗?也许可以用一个最大限度简化的例子更详细地描述你的目标。一个查询不可能吗?可能是一个连接查询?@user:可能是一个联合,但它在语义上没有意义。你想干什么?
…
GROUP BY CASE nid WHEN 1 THEN -id ELSE nid END
…
…
GROUP BY CASE nid WHEN 1 THEN -id ELSE nid END
…