我的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
答案 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不行。