Bạn không thể (không được) đặt các số không tổng hợp vào dòng SELECT
của truy vấn GROUP BY
.Tôi có thể sử dụng các cột không tổng hợp với nhóm không?
Tuy nhiên, tôi muốn truy cập vào một trong những tập hợp không được kết hợp với giá thầu CPC Trong tiếng Anh đơn giản, tôi muốn một bảng có id cũ nhất của mỗi loại.
CREATE TABLE stuff (
id int,
kind int,
age int
);
Truy vấn này mang lại cho tôi những thông tin tôi sau:
SELECT kind, MAX(age)
FROM stuff
GROUP BY kind;
Nhưng nó không phải theo hình thức hữu ích nhất. Tôi thực sự muốn id
được liên kết với mỗi hàng để tôi có thể sử dụng nó trong các truy vấn sau này.
Tôi đang tìm một cái gì đó như thế này:
SELECT id, kind, MAX(age)
FROM stuff
GROUP BY kind;
Đó kết quả đầu ra này:
SELECT stuff.*
FROM
stuff,
(SELECT kind, MAX(age)
FROM stuff
GROUP BY kind) maxes
WHERE
stuff.kind = maxes.kind AND
stuff.age = maxes.age
Nó thực sự có vẻ như không nên có đi để có được thông tin này mà không cần phải tham gia. Tôi chỉ cần các công cụ SQL để nhớ các cột khác khi nó tính toán tối đa.
Đẹp, chắc chắn bạn sẽ cần để tham gia để có được những gì bạn muốn. Nó sẽ được mát mẻ nếu có một số cách để nói "kéo giá trị từ hàng này, bạn chỉ cần lấy tối đa từ" nhưng không có một tham gia không phải là kiến thức của tôi. – heisenberg
Có thể không chỉ có một id với độ tuổi tối đa. Mà một trong những nên được trả lại? Hoặc bạn sẽ nhận được một cho mỗi hàng? – Blorgbeard
Hoặc trường hợp bạn có nhiều tập hợp lựa chọn các hàng khác nhau, sẽ cần phải có một số loại đường cú pháp cho phép bạn cho biết tổng hợp từng trường cần được liên kết với. – heisenberg