O mümkün mü GROUP BYMySQL birden fazla sütuna SELECTsorgusu? Örneğin:
GROUP BY fV.tier_id AND 'f.form_template_id'
O mümkün mü GROUP BYMySQL birden fazla sütuna SELECTsorgusu? Örneğin:
GROUP BY fV.tier_id AND 'f.form_template_id'
Yanıtlar:
GROUP BY col1, col2, col3
Evet, birden çok sütuna göre gruplayabilirsiniz. Örneğin,
SELECT * FROM table
GROUP BY col1, col2
Sonuçlar önce col1'e, sonra col2'ye göre gruplandırılacaktır. MySQL'de sütun tercihi soldan sağa gider.
GROUP BYgeçerlidir col1+col2. örneğin col1 = 1, 2, 1, 2 | col2 = 1, 2, 3, 2ve koşmak önerilenin aksine GROUP BY col1,col2dönecektir . Oysa artan col2 sırasını değiştirirdi. Demo: sqlfiddle.com/#!9/d5f69/1 Sütunların tersine çevrilmesine rağmen her iki durumda da satır kimliği: 2'nin döndürüldüğünü unutmayın . 1,1|1,3|2,21,1|2,2GROUP BY col2, col11,1|2,2|1,32,2
GROUP BY) göre sıralar . Ve ilk tanımlı sütunda eşit sonuçlar varsa, o zaman sadece ikinci tanımlı sütuna göre eşit sonuç sıralaması içinde
SUMile ilgili GROUP BY. Eğer GROUP BYsadece tek sütun ve ardından SUMher bir ayrı (farklı) tüm değerleri sütun değeri s sqlfiddle.com/#!9/1cbde2/2 . EğerGROUP BYİki sütun . Daha sonra ilk önce mysql, ilk sütun değeri için ikinci sütunda farklı değerler olup olmadığını kontrol eder. Evetse, sqlfiddle.com/#!9/1cbde2/1SUM ikinci sütunun her farklı değerini mysql olarak ayarlayın .
Evet, ancak iki sütuna göre gruplama ne anlama geliyor? Bu, her satırdaki her bir benzersiz çift tarafından gruplandırmayla aynıdır. Sütunları listelediğiniz sıra, satırların sıralanma biçimini değiştirir.
Örneğinizde,
GROUP BY fV.tier_id, f.form_template_id
Bu arada, kod
GROUP BY f.form_template_id, fV.tier_id
benzer sonuçlar verir, ancak farklı şekilde sıralanır.
Basit bir örnek kullanmak için, bir sitede ziyaret edilen sayfa başına benzersiz IP adreslerini özetlemek için bir sayacım vardı. Hangi temelde pagename ve sonra IP ile gruplandırma. DISTINCT ve GROUP BY kombinasyonuyla çözdüm.
SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
(Bunu uygulamak zorundayım) grubunu aynı anda iki sütun tercih ederseniz, sadece bu noktayı gördüm:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1
SELECT CONCAT(col1, '_', col2) FROM GROUP BY col1, col2. Sonuçlar genellikle bu cevapla aynı görünecektir , ancak dahili yürütme oldukça farklıdır.
GROUP BY CONCAT(col1, '_', col2)
GROUP BY col1, col2. Bazı verilerle yanlış sonuçlar verecektir. Diyelim col1, col2ki değerler var: ('a_b', 'c')bir satırda ve ('a', 'b_c')diğerinde. GROUP BY CONCAT ile bu yanlış cevap iki satırı bir araya getirecektir. Doğru cevap olmayacak.
SELECT CONCAT(col1, '_', col2) ... FROM ... GROUP BY col1, col2 ;