【发布时间】:2019-11-01 22:12:51
【问题描述】:
我在 MYSQL 和 MSSQL(SQL server) DB 中有一个名为 - tbl_emp_info 的表,具有相同的架构和数据。
我正在对此数据执行以下查询 -
MYSQL 查询
select count(*), name from tbl_emp_info group by dept;
MSSQL 查询
select count(*), name from tbl_emp_info group by dept;
当我执行 MYSQL 查询时,它会运行并给我结果。 但是当我执行 MSSQL 查询时,它给出了这个错误
SQL 错误 (8120):列 'NAME' 在 选择列表,因为它不包含在任一聚合中 函数或 GROUP BY 子句。
现在,我了解了这个错误,我已经检查了它的参考 - 看看这个:REF
此外,在 MYSQL 中 - 它会在输出中为 NAME 提供第一个值,并在 DEPT 执行“分组依据”时忽略 NAME 的其余值。
我还需要使用 MSSQL 获取相同的结果。请赐教。
【问题讨论】:
-
您按部门分组,但选择名称作为非聚合列。有问题。
-
MSSQL默认有严格的规定,如果列不在选择区域,它不会让你分组
-
添加一些样本数据和预期的输出结果。这会有所帮助。
-
使用聚合函数时,不能使用聚合函数中不包含的列。这是针对 MSSQL 的。
标签: mysql sql sql-server