tôi nhận ra rằng một truy vấn cơ sở dữ liệu được trả về kết quả bất ngờ làm gì để sử dụng không đúng của tôi về "ON DISTINCT" và "GROUP BY"PostgreSQL - "ON DISTINCT" và "GROUP BY" cú pháp
Tôi hy vọng ai đó có thể đặt tôi thẳng vào điều này. Truy vấn thực tế là khá phức tạp, vì vậy tôi sẽ câm nó xuống:
Tôi có một bảng/truy vấn bên trong đó bao gồm một object_id và một dấu thời gian:
CREATE TABLE test_select (object_id INT , event_timestamp timestamp);
COPY test_select (object_id , event_timestamp) FROM stdin (DELIMITER '|');
1 | 2013-01-27 21:01:20
1 | 2012-06-28 14:36:26
1 | 2013-02-21 04:16:48
2 | 2012-06-27 19:53:05
2 | 2013-02-03 17:35:58
3 | 2012-06-14 20:17:00
3 | 2013-02-15 19:03:34
4 | 2012-06-13 13:59:47
4 | 2013-02-23 06:31:16
5 | 2012-07-03 01:45:56
5 | 2012-06-11 21:33:26
\.
Tôi đang cố gắng để lựa chọn một biệt ID, ra lệnh/loại bỏ trùng lặp bởi dấu thời gian trên Sử ký ngược
nên kết quả sẽ được [4, 1, 3, 2, 5]
tôi nghĩ rằng đây có phải những gì tôi cần (có vẻ như):
SELECT object_id
FROM test_select
GROUP BY object_id
ORDER BY max(event_timestamp) DESC
;
Đối với mục đích kiểm tra/kiểm tra, đôi khi tôi muốn bao gồm trường dấu thời gian. Tôi dường như không thể tìm ra cách bao gồm một trường khác với truy vấn đó.
Có ai có thể chỉ ra các vấn đề rõ ràng trong sql của tôi ở trên hoặc đề xuất về cách bao gồm thông tin kiểm tra?
Cảm ơn! Ví dụ thứ hai của bạn là cú pháp tôi đã cố gắng hiểu. Tôi sẽ kiểm tra các truy vấn khác để thực hiện sau này và xem liệu tôi có thể sử dụng chúng hay không. Tôi đang xây dựng truy vấn này dựa trên đầu vào của người dùng và ví dụ thứ hai là "dễ dàng thực hiện được". –