[英]MySQL GROUP BY, and testing the grouped items
我有这样的查询:
select a, b, c, group_concat(d separator ', ')
from t
group by a;
这似乎工作正常。 据我了解(原谅,我是MySQL菜鸟!),它返回以下行:
a
价值 a
值,一个b
和c
值 a
值,所有d
值都连接成一个字符串 这就是我想要的,但我也想检查每个a
中, b
和c
都是一样的,对于所有的行a
值。
我的第一个想法是比较:
select count(*) from t group by a, b, c;
与:
select count(*) from t group by a;
并确保它们相等。 但是我并没有说服自己这是正确的,而且我当然不确定是否有更好的方法。 是否有SQL / MySQL习惯用法?
谢谢!
文档中阐明了依赖MySQL的“隐藏列”功能的问题:
使用此功能时,每个组中的所有行对于从GROUP BY部分中省略的列都应具有相同的值。 服务器可以自由地从组中返回任何值,因此除非所有值都相同,否则结果是不确定的。
应用于您的示例,这意味着b
和c
的值是任意的-无法依赖结果始终返回相同的值,并且看到行为的可能性随b
/的可能值的数量而增加c
可以返回。 因此,与GROUP BY a
和GROUP BY a, b, c
相比没有太多价值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.