Có thể GROUP BY
nhiều hơn một cột trong truy vấn MySQL SELECT
không? Ví dụ:Có thể GROUP BY nhiều cột bằng cách sử dụng MySQL không?
GROUP BY fV.tier_id AND 'f.form_template_id'
Có thể GROUP BY
nhiều hơn một cột trong truy vấn MySQL SELECT
không? Ví dụ:Có thể GROUP BY nhiều cột bằng cách sử dụng MySQL không?
GROUP BY fV.tier_id AND 'f.form_template_id'
GROUP BY col1, col2, col3
group by fV.tier_id, f.form_template_id
GROUP BY CONCAT(col1, '_', col2)
Tôi tự hỏi làm thế nào một câu trả lời chỉ với một dòng mã, đăng 4 năm sau khi câu hỏi đã được trả lời được 8 (tám!) Upvotes. Trong khi cũng không chính xác và không hiệu quả bên cạnh muộn và ngắn. –
Ngay cả một con sóc mù cũng nhận được một hạt bây giờ và sau đó ... – thebarless
@ ypercubeᵀᴹ tại sao bạn nói nó không chính xác? Đây chính xác là những gì tôi đang tìm kiếm và giải thích chính xác "nhóm theo nhiều cột". Trong thực tế, tôi không biết tại sao đây không phải là hành vi của "nhóm theo col1, col2" như tôi mong đợi – Abram
Có bạn có thể nhóm bởi nhiều cột. Nhưng bạn không thể có được câu trả lời đúng.
select * from table group by col1, col2
đâu,
col1 có sở thích đầu tiên nhóm lại và col2 có sở thích thứ hai. Bởi vì mysql cho ưu tiên từ trái sang phải.
Tùy chọn từ trái sang phải được áp dụng cho thứ tự tăng dần của các nhóm và không áp dụng tùy chọn nhóm cột. 'GROUP BY' áp dụng' col1 + col2'. ví dụ. 'col1 = 1, 2, 1, 2 | col2 = 1, 2, 3, 2' và chạy 'GROUP BY col1, col2' sẽ trả về' 1,1 | 1,3 | 2,2' ngược với '1,1 | 2,2' như đã đề xuất. Trong khi 'GROUP BY col2, col1' sẽ thay đổi thứ tự tăng dần của col2. '1,1 | 2,2 | 1,3' Demo: http://sqlfiddle.com/#!9/d5f69/1 Lưu ý rằng id hàng: 2 được trả lại trong cả hai trường hợp cho' 2,2' mặc dù đảo ngược cột. – fyrye
Có, Mysql đã cho chúng tôi kết quả không chính xác –
Có, nhưng nhóm có thêm hai cột nghĩa là gì? Vâng, nó giống như nhóm theo từng cặp duy nhất mỗi hàng. Thứ tự bạn liệt kê các cột thay đổi cách sắp xếp các hàng.
Trong ví dụ của bạn, bạn sẽ viết
GROUP BY fV.tier_id, f.form_template_id
Trong khi đó, các mã
GROUP BY f.form_template_id, fV.tier_id
sẽ cho kết quả tương tự, nhưng được sắp xếp khác nhau.
Để sử dụng ví dụ đơn giản, tôi có một bộ đếm cần thiết để tóm tắt các địa chỉ IP duy nhất trên mỗi trang được truy cập trên một trang web. Mà về cơ bản là nhóm theo pagename và sau đó bằng IP. Tôi đã giải quyết nó bằng sự kết hợp giữa DISTINCT và GROUP BY.
SELECT pagename, COUNT(DISTINCT ipaddress) AS visit_count FROM log_visitors GROUP BY pagename ORDER BY visit_count DESC;
Nếu bạn thích (Tôi cần phải áp dụng điều này) nhóm bởi hai cột tại cùng một thời gian, tôi chỉ thấy điểm này:
SELECT CONCAT (col1, '_', col2) AS Group1 ... GROUP BY Group1
Bạn không thể nhóm bởi hàng. Bạn có thể nhóm theo các cột mặc dù –
Vì lợi ích của SEO: tìm kiếm đầu tiên của tôi là cho "nhiều' GROUP BY' MySQL ". –
Đó không phải dành cho SEO, đó là dành cho người dùng. – Buffalo