我有这样的查询:
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习惯用法?
谢谢!
答案 0 :(得分:1)
依赖MySQL's Hidden Columns functionality is spelled out in the documentation:
的问题使用此功能时,每个组中的所有行应与GROUP BY部分中省略的列具有相同的值。服务器可以自由地从组中返回任何值,因此除非所有值都相同,否则结果是不确定的。
应用于您的示例,这意味着b
和c
的值是任意的 - 不能依赖结果来始终返回相同的值,并且可能会看到行为会随着b
/ c
可以返回的可能值的数量而增加。因此,与GROUP BY a
和GROUP BY a, b, c
...