Làm cách nào để kết hợp chính xác câu lệnh này.Cách kết hợp GROUP BY, ORDER BY và HAVING
SELECT *, COUNT(*)
FROM user_log
GROUP BY Email
ORDER BY UpdateDate DESC
HAVING COUNT(*) > 1
Hãy cho tôi biết
Làm cách nào để kết hợp chính xác câu lệnh này.Cách kết hợp GROUP BY, ORDER BY và HAVING
SELECT *, COUNT(*)
FROM user_log
GROUP BY Email
ORDER BY UpdateDate DESC
HAVING COUNT(*) > 1
Hãy cho tôi biết
ORDER BY
luôn là cuối cùng ...
Tuy nhiên, bạn cần phải chọn trường nào mà bạn thực sự muốn sau đó chỉ chọn những người và nhóm của họ. SELECT *
và GROUP BY Email
sẽ cung cấp cho bạn RANDOM VALUES cho tất cả các trường nhưng Email
. Hầu hết các RDBMS thậm chí sẽ không cho phép bạn làm điều này vì các vấn đề nó tạo ra, nhưng MySQL là ngoại lệ.
SELECT Email, COUNT(*)
FROM user_log
GROUP BY Email
HAVING COUNT(*) > 1
ORDER BY UpdateDate DESC
+1 điểm tốt về MySQL và GROUP BY –
(Khi bạn có 'GROUP BY'), cùng một logic áp dụng cho tất cả các trường bạn đặt trong danh sách' SELECT', mệnh đề 'HAVING' và mệnh đề' ORDER BY' . Vì vậy, nó cũng áp dụng cho 'ORDER BY UpdateDate'. Trừ khi 'UpdateDate' phụ thuộc vào 'Email', bạn sẽ nhận được một thứ tự khá ngẫu nhiên. –
Các bước để Sử dụng Group bởi, Có Bằng và Sắp xếp theo ...
Select Attitude ,count(*) from Person
group by person
HAving PersonAttitude='cool and friendly'
Order by PersonName.
Quy tắc GROUP BY chung là: "Nếu mệnh đề GROUP BY được chỉ định, mỗi tham chiếu cột trong danh sách SELECT phải xác định cột nhóm hoặc là đối số của hàm được đặt" – jarlh
Mã của bạn nên chứa WHILE
trước group by
và having
:
SELECT Email, COUNT(*)
FROM user_log
WHILE Email IS NOT NULL
GROUP BY Email
HAVING COUNT(*) > 1
ORDER BY UpdateDate DESC
Dán bản sao đẹp: P –
chung GROUP BY tip: "Nếu một mệnh đề GROUP BY được chỉ định, mỗi tham chiếu cột trong danh sách SELECT phải xác định một cột nhóm hoặc là đối số của một đặt chức năng. " – jarlh