gpt4 book ai didi

mysql - 如何在 MSSQL 中对单列使用 Group By

转载 作者:行者123 更新时间:2023-11-29 07:43:25 25 4
gpt4 key购买 nike

我有一个为 MySql 编写的查询,它使用 LIMIT 和 GROUP BY 关键字。它在 MySql 上运行良好。查询是:

SELECT 
tester,
firstname,
COUNT(*) total
FROM mnrelease_details a LEFT JOIN users b ON tester='guest'
WHERE a.project='testpro'
GROUP BY tester ORDER BY total ASC LIMIT 10;

我尝试将其转换为 T-Sql 以在 Sql Server 上使用。这是我对 Sql Server 的了解:

SELECT TOP 10 
tester,
firstname,
COUNT(*) total
FROM mnrelease_details a
LEFT JOIN users b ON tester='guest'
WHERE a.project='testpro'
GROUP BY tester ORDER BY total ASC;

但是,当我尝试在 Sql Server 上使用它时,出现此错误:

Column 'users.firstname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

为什么 Sql Server 不允许这样做?为什么 Sql Server 不允许使用单个 GROUP BY,而是添加 GROUP BY 中的所有列?我只想按 tester 列进行分组,就像我对 MySql 所做的那样。

最佳答案

如果您有这样的数据怎么办?

tester   firstname------   ---------  1      Joe  2      Bob  2      Fred 

您希望测试者 2 出现哪个名字:Bob 或 Fred?如果您需要两者,请自行将该列添加到组中,因为名字列是您定义的组的一部分。如果您不在乎,那么只需选择一个聚合函数,例如 MIN()MAX():这并不重要。如果您确实关心,那么您需要在查询中构建一些内容来告诉它如何从正确的记录中选择值。

问题是原始查询可能不明确。也许您拥有的数据永远不会成为问题,但查询引擎事先并不知道这一点。 MySql 在这里的行为实际上是错误的行为,并且背离了 ansi sql 标准(至少对于 sql-92 及之前的版本)。

关于mysql - 如何在 MSSQL 中对单列使用 Group By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com