繁体   English   中英

MySQL GROUP BY,并测试分组项

[英]MySQL GROUP BY, and testing the grouped items

我有这样的查询:

select a, b, c, group_concat(d separator ', ')
from t
group by a;

这似乎工作正常。 据我了解(原谅,我是MySQL菜鸟!),它返回以下行:

  • 每个独特a价值
  • 对于每个a值,一个bc
  • 同样对于每个a值,所有d值都连接成一个字符串

这就是我想要的,但我也想检查每个a中, bc都是一样的,对于所有的行a值。

我的第一个想法是比较:

select count(*) from t group by a, b, c;

与:

select count(*) from t group by a;

并确保它们相等。 但是我并没有说服自己这是正确的,而且我当然不确定是否有更好的方法。 是否有SQL / MySQL习惯用法?

谢谢!

文档中阐明了依赖MySQL的“隐藏列”功能的问题:

使用此功能时,每个组中的所有行对于从GROUP BY部分中省略的列都应具有相同的值。 服务器可以自由地从组中返回任何值,因此除非所有值都相同,否则结果是不确定的。

应用于您的示例,这意味着bc的值是任意的-无法依赖结果始终返回相同的值,并且看到行为的可能性随b /的可能值的数量而增加c可以返回。 因此,与GROUP BY aGROUP BY a, b, c相比没有太多价值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM