我有这样的查询:
SELECT col1, col2, col3, col4, col5, SUM(col6) AS total FROM table_name WHERE col1 < 99999 GROUP BY 1,2,3,4,5
该GROUP BY声明实际上在这里完成了什么?没有逗号分隔的整数,查询将无法正常工作。
GROUP BY
相当于写:
SELECT col1, col2, col3, col4, col5, SUM(col6) AS total FROM table_name WHERE col1 < 99999 GROUP BY col1, col2, col3, col4, col5
数字是选择列表中的值/列,以列表中的顺序位置表示,从1开始。
强制使用的数字;然后添加了使用选择列表中的表达式的功能。表达式可能会变得笨拙,并且并非所有的DBMS都允许您使用GROUP BY子句中选择列表中的“显示标签”或“列别名”,因此偶尔使用列号会有所帮助。
在您的示例中,最好使用名称-它们很简单。而且,通常,请尽可能使用名称而不是数字。