按主键与主键和从属列分组

group by primary key vs primary key and dependant columns

CREATE TABLE T1 (a int primary key, b int);

SELECT a, b FROM T1 GROUP BY a;

--消息 8120 级别 16。列 'T1.b' 在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。

我原以为这会起作用,因为 b 列显然是一个从属列,所以按 a、b 分组显然与按 a 分组相同。

我正在使用 SQL Server 2016。

SQL 服务器不支持 GROUP BY 中的依赖列。所有数据库在某些方面都不同于标准规范。因此,尽管标准允许您执行的操作,但并非所有数据库都支持该功能。

只需使用聚合函数:

SELECT a, MAX(b) as b
FROM T1
GROUP BY a;

或将其包含在 GROUP BY:

SELECT a, b
FROM T1
GROUP BY a, b;

而且我还应该指出 GROUP BY 在这种情况下是不必要的。我怀疑这是对更复杂的查询的引用。

如果您需要不同的值,请使用 DISTINCT 而不是分组依据

SELECT 与 T1 不同的 a、b

otehrwise ..对 group by 子句中未提及的列使用适当的聚合函数