Tôi có bảng sau:Chọn 3 kỷ lục gần đây nhất nơi các giá trị của một cột là khác biệt
id time text otheridentifier
-------------------------------------------
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2
Những gì tôi muốn làm là chọn 3 kỷ lục gần đây nhất (theo thời gian, giảm dần), có otheridentifier
s là khác biệt. Vì vậy, trong trường hợp này, kết quả sẽ là id
's: 5, 4 và 2.
id
= 3 sẽ bị bỏ qua vì có hồ sơ gần đây hơn với cùng trường otheridentifier
.
Đây là những gì tôi đã cố gắng để làm:
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3
Tuy nhiên, tôi cuối cùng nhận được hàng id
= 5, và thay vì 5, 4, 2 như mong đợi.
Ai đó có thể cho tôi biết tại sao truy vấn này không trả về những gì tôi mong đợi? Tôi đã thử thay đổi ORDER BY thành ASC nhưng điều này chỉ đơn giản là sắp xếp lại các hàng trả về thành 1, 3, 5.
tôi nhớ thời gian tôi dành nhiều thời gian để sửa chữa sql như thế này và quay ra mysql 4.0 không hỗ trợ truy vấn lồng nhau; p – Unreality
@Unreality: Fortu nately hầu hết các giải pháp liên quan đến truy vấn con có thể được biểu diễn dưới dạng tham gia nếu cần. :) – Rytmis
Vâng, nhưng những người có ORDER/LIMIT được _not_ dễ dàng biểu đạt bằng JOIN ... –