GROUP BY语句中以逗号分隔的整数完成了什么?

Jam*_*ore 5 sql group-by

我有这样的查询:

SELECT col1, col2, col3, col4, col5, SUM(col6) AS total
FROM table_name
WHERE col1 < 99999
GROUP BY 1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)

GROUP BY声明在这里实际完成了什么?没有逗号分隔的整数,查询无法正常工作.

Jon*_*ler 7

它相当于写作:

SELECT col1, col2, col3, col4, col5, SUM(col6) AS total
  FROM table_name
 WHERE col1 < 99999
 GROUP BY col1, col2, col3, col4, col5
Run Code Online (Sandbox Code Playgroud)

数字是选择列表中的值/列,由列表中的序号位置表示,从1开始.

用于强制的数字; 然后添加了使用选择列表中的表达式的能力.表达式可能变得难以处理,并且并非所有DBMS都允许您使用GROUP BY子句中的select-list中的"display labels"或"column aliases",因此偶尔使用列号会很有帮助.

在您的示例中,最好使用名称 - 它们很简单.而且,通常,尽可能使用名称而不是数字.