[英]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.