2012-03-26 34 views
9

Tôi có bảng mysql có ba cột: tên người dùng, vị trí, dấu thời gian. Điều này về cơ bản là nhật ký hoạt động của người dùng về vị trí của họ và thời gian họ ở đó.Truy vấn SQL để chọn riêng biệt với dấu thời gian gần nhất đầu tiên

Điều tôi muốn làm là chọn một tên người dùng + vị trí riêng biệt nơi chỉ có mục gần đây nhất (theo dấu thời gian) được cung cấp.

Vì vậy, nói bàn bao gồm:

tom roomone 2011-3-25 10:45:00 
tom roomtwo 2011-3-25 09:00:00 
tom roomtwo 2011-3-25 08:30:00 
pam roomone 3011-3-25 07:20:23 

tôi muốn chỉ những được lựa chọn:

tom roomone 2011-3-25 10:45:00 
tom roomtwo 2011-3-25 09:00:00 

Trả lời

15

thử truy vấn sau đây với table1 như tablename của bạn:

select username, location, max(timestamp) from table1 
group by username, location 
1

Câu trả lời này sẽ không thực sự đảm bảo các cột khác có cùng bản ghi với tên người dùng/dấu thời gian, nhưng sau đây l (sử dụng truy vấn con).

select t1.* 
from (
    select ForeignKeyId,AttributeName, max(Created) AS MaxCreated 
    from YourTable 
    group by ForeignKeyId,AttributeName 
) t2 
join YourTable t1 
on t2.ForeignKeyId = t1.ForeignKeyId 
and t2.AttributeName = t1.AttributeName 
and t2.MaxCreated = t1.Created 

trả lời tìm thấy tại địa chỉ:

Select distinct most recent

Các vấn đề liên quan