MSSQL Query应该返回与MYSQL相同的内容

时间:2015-02-03 14:23:43

标签: sql-server mssql-jdbc

我的MYSQL查询并且工作正常 QUERY IS:

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

以上查询返回单个记录如果我在此查询中添加GROUP BY tst_type,则会返回多个值。

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

  

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

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

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

2 个答案:

答案 0 :(得分:0)

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

另请查看此SO帖子: Why does MySQL allow "group by" queries WITHOUT aggregate functions?

答案 1 :(得分:0)

当您在此处执行COUNT()时,需要GROUP BY才能获得正确的结果。请参阅MySQL docs on the function

您可以使用count(*)而不使用任何其他字段来计算记录总数。否则,您必须使用GROUP BY

恕我直言,您对此查询的要求是倒退的;当GROUP BY中包含非聚合字段时,聚合函数需要select正确/一致地运行。 MSSQL表现正常,MySQL不行。