0

我有 MYSQL 查询并且工作正常查询是:

select tst_type, count(tst_type) tot from tst_type where project='JupiQA';

上面的查询返回单个记录如果我GROUP BY tst_type在这个查询中添加它会返回多个值。

我在 MSSQL 中尝试的查询没有GROUP BY tst_type,它显示错误

错误是:列 'tst_type.tst_type' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

之后添加GROUP BY tst_type到 MSSQL 查询中,然后工作正常并返回多个值。

但我的要求是它应该返回与 MYSQL 相同而不添加 GROUP BY fn 或者应该返回单个值,如 MYSQL

4

2 回答 2

0

MySQL 允许这种行为,但我不知道任何其他允许这种行为发生的 DBMS。如果您希望 MySQL 和 MSSQL 查询行为相同,请添加 SQL 模式 ONLY_FULL_GROUP_BY。MySQL 现在将正确地抛出错误。

另请查看此 SO 帖子: 为什么 MySQL 允许没有聚合函数的“分组依据”查询?

于 2015-02-03T14:50:39.560 回答
0

COUNT()你在这里做的时候,GROUP BY需要得到正确的结果。请参阅有关该功能的 MySQL 文档

您可以使用count(*)不带任何其他字段的 a 来获取记录总数。否则,您必须使用GROUP BY.

恕我直言,您对此查询的要求是向后的;当非聚合GROUP BY字段包含在select. MSSQL 行为正常,MySQL 不正常。

于 2015-02-03T14:51:06.687 回答