Spe*_*cer 181 mysql sql group-by
有人给我发了一个SQL查询,其中的GROUP BY子句包含声明:GROUP BY 1.
这一定是拼写错误吗?没有列给别名1.这意味着什么?我是否正确地认为这必须是一个错字?
Yuc*_*uck 210
它意味着按第一列分组,无论它被称为什么.你也可以这样做ORDER BY.
mr_*_*air 69
SELECT account_id, open_emp_id
^^^^ ^^^^
1 2
FROM account
GROUP BY 1;
Run Code Online (Sandbox Code Playgroud)
在上面的查询GROUP BY 1中指的是first column in select statement哪个
account_id.
你也可以指定ORDER BY.
注意:ORDER BY和GROUP BY中的数字始终以1而不是0开头.
小智 5
它将按您在 group by 子句之后放置的列位置进行分组。
例如,如果您运行 ' SELECT SALESMAN_NAME, SUM(SALES) FROM SALES GROUP BY 1',它将按 进行分组SALESMAN_NAME。
这样做的一个风险是,如果您运行“ Select *”,并且由于某种原因您重新创建了具有不同顺序的列的表,它将给出与您预期不同的结果。
小智 5
这意味着 *“按选择子句中的第一列分组”。始终GROUP BY 1与 一起使用ORDER BY 1。
您也可以使用GROUP BY 1,2,3... 它很方便,但你需要注意那个条件;如果有人修改了您的选择列并且没有可视化,结果可能不是您想要的。