Id nào sẽ được trả lại (1, 2 hoặc 3)?
A:Máy chủ sẽ chọn cho tất cả các bản ghi có cùng tên id mà nó muốn (rất có thể là nhanh nhất để tìm nạp, điều này không thể đoán trước được). Để trích dẫn tài liệu chính thức:
Nhiều thông tin hơn trong liên kết này .
Id nào là truy vấn này sẽ chuyển đến ORDER BY (Giống như được trả về? ... xem câu hỏi 1)?
Không có ý nghĩa gì khi tìm ra thứ tự dữ liệu được truy xuất sẽ được trả về vì bạn không thể dự đoán kết quả bạn sẽ nhận được. Tuy nhiên, rất có thể bạn nhận được kết quả được sắp xếp theo cột ID không thể đoán trước.
Bạn có thể kiểm soát id nào được trả lại / sử dụng để đặt hàng không? ví dụ. Trả lại id lớn nhất hoặc id đầu tiên từ GROUP.
Tại thời điểm này, bạn nên giả định rằng bạn không thể. Đọc lại tài liệu.
Làm cho mọi thứ trở nên rõ ràng hơn:Bạn không thể dự đoán kết quả của mệnh đề GROUP BY được sử dụng không đúng cách. Vấn đề chính với MySQL là nó cho phép bạn sử dụng nó theo cách không chuẩn nhưng bạn cần biết cách sử dụng tính năng đó. Điểm chính đằng sau nó là nhóm theo các trường mà bạn biết sẽ luôn giống nhau. EG:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
Ở đây, bạn biết name
sẽ là duy nhất dưới dạng id
xác định chức năng name
. Vì vậy, kết quả bạn biết là hợp lệ. Nếu bạn cũng nhóm theo tên thì truy vấn này sẽ chuẩn hơn nhưng sẽ hoạt động kém hơn một chút trong MySQL.
Lưu ý cuối cùng, hãy lưu ý rằng, theo kinh nghiệm của tôi, kết quả trong các truy vấn không chuẩn đó cho các trường đã chọn và không được nhóm lại thường là những kết quả mà bạn sẽ nhận được khi áp dụng GROUP BY
và sau đó là ORDER BY
trên lĩnh vực đó. Đó là lý do tại sao rất nhiều lần nó dường như làm việc. Tuy nhiên, nếu bạn tiếp tục kiểm tra, cuối cùng bạn sẽ phát hiện ra rằng điều này xảy ra 95% thời gian. Và bạn không thể dựa vào con số đó.