最近,我发现尽管patientID在我的Samples表中复制,但是下面的查询工作正常
SELECT * FROM Samples GROUP BY patientID并返回多列的多个值。
默认情况下,它使用什么聚合函数?
发布于 2016-07-12 10:56:36
首先,这是格式错误的SQL,您不应该使用它。
但它能做什么呢?它返回一个结果集,每个PatientId有一行。SELECT *指定的其他列来自数据中不确定的行。不能保证额外的列甚至来自同一行。
实际上,这些值似乎来自遇到的第一行。但是,MySQL非常明确地表明,您不能依赖于这种行为。通常,您应该避免使用在SELECT中没有包含在GROUP BY中的未聚合列的聚合语句。其他数据库不支持这种语法(除非GROUP BY键在正在聚合的数据上形成唯一/主键)。
发布于 2016-07-12 10:56:33
MySQL似乎根本没有使用聚合函数。在这种情况下选择的记录是不确定的,正如文档所述:
在这种情况下,服务器可以自由地从每个组中选择任何值,因此除非它们是相同的,否则所选择的值是不确定的,这可能不是您想要的。
但是,您可能会想知道为什么这个特性在一开始就存在。如果您正在编写一个查询,其中知道列中的所有值都是相同的,那么通过不必编写联接或子查询来使GROUP BY严格兼容,此特性可能会节省您的一些工作。
发布于 2016-07-12 10:54:22
您必须使用一个聚合函数,如SUM、AVG、COUNT dev.mysql群。
https://stackoverflow.com/questions/38326768
复制相似问题