簡體   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