我遇到了一个由
指定的查询select concat(21*floor(diff/21), '-', 21*floor(diff/21) + 20) as `range`, count(*) as
`number of users` from new_table group by 1 order by diff;
这里group by 1
究竟是什么意思?
答案 0 :(得分:3)
假设你有一个选择:
SELECT name FROM employee GROUP BY 1;
无论如何,它总是按照select中给出的第一列进行分组。 在这种情况下,列名称'分组。
因此,如果我们将上述陈述替换为:
SELECT department FROM employee GROUP BY 1;
我们现在对部门进行分组,而无需更改' 1'在小组中。
编辑:(按照斯图尔特的要求)
如果我们在表格中有以下数据' employe':
-- name --
Walt
Walt
Brian
Barney
一个简单的选择将传递上面的所有行,而'组则传递1'会产生一个Walt-row:
以group by:
输出-- name --
Walt
Brian
Barney
答案 1 :(得分:0)
+1 @FabianBigler首先回答,但我会补充一下:
http://dev.mysql.com/doc/refman/5.6/en/select.html说:
可以使用列名,列别名或列位置在ORDER BY和GROUP BY子句中引用为输出选择的列。列位置是整数,以1开头。
对于它的价值,这是非标准的SQL,所以不要指望它适用于其他品牌的SQL数据库。