(Tôi không thể nói tiếng Anh rất tốt, nhưng tôi sẽ cố gắng hết sức)MySQL chọn các giá trị riêng biệt theo thứ tự ngày
Tôi có hai bảng.
table1
id carid user --------------------- 1 | A001 | user1 2 | A002 | user1 3 | A003 | user2 4 | A002 | user3
table2
id carid datetime lat lon ---------------------------------------------------- 1 | A001 | 2013-25-06 10:00:00 | -23.0000 | -46.0000 2 | A002 | 2013-25-06 10:01:00 | -24.3500 | -45.3200 3 | A002 | 2013-25-06 10:02:00 | -24.3800 | -45.3300 4 | A001 | 2013-25-06 10:05:00 | -23.0500 | -46.1000 5 | A003 | 2013-25-06 10:07:00 | -24.3500 | -45.3200 6 | A001 | 2013-25-06 10:10:00 | -23.0700 | -46.1200
tôi cần phải chọn từng registry biệt "carid" từ "user1" lệnh của datetime
Result tôi cần:
carid datetime lat lon -------------------------------------------------- A001 | 2013-25-06 10:10:00 | -23.0700 |-46.1200 A002 | 2013-25-06 10:02:00 | -24.3800 |-45.3300
Cách tôi thực sự tạo ra là chọn tất cả "carid" từ người dùng mà tôi muốn và chọn từng hàng riêng lẻ thông qua .net.
`SELECT carid FROM table1 where user = “user1”;`
carid ----- A001 A002
Sau đó chọn hàng này tôi muốn:
SELECT * FROM table2 WHERE car_id='A001' ORDER BY datetime DESC limit 1
SELECT * FROM table2 WHERE car_id='A002' ORDER BY datetime DESC limit 1
Nhưng tùy thuộc vào số lượng đăng ký "carid của" từ người dùng mà tôi phải làm rất nhiều querys. Tôi không biết nếu nó có thể làm điều này với một SELECT đơn cải tiến cách tôi đang làm, nhưng đó là những gì tôi đã cố gắng:
SELECT car_id, datetime, lat, lon from table1
INNER JOIN table2 on carid = car_id
WHERE user = 'user1'
GROUP BY carid
ORDER BY datetime DESC;
Kết quả:
carid datetime lat lon ------------------------------------------------------ A002 | 2013-25-06 10:01:00 | -24.3500 | -45.3200 A001 | 2013-25-06 10:02:00 | -23.0000 | -46.0000
Và tôi cũng đã cố gắng này:
SELECT car_id, MAX(datetime) as datetime, lat, lon from table1
INNER JOIN table2 on carid = car_id
WHERE user = 'user1'
GROUP BY carid
ORDER BY datetime DESC;
Kết quả:
carid datetime lat lon ------------------------------------------------------ A001 | 2013-25-06 10:10:00 | -23.0000 | -46.0000 A002 | 2013-25-06 10:02:00 | -24.3500 | -45.3200
Nhưng kết quả tôi nhận được là sai. Tôi không biết phải làm gì mà không chọn tất cả các hàng, đó là cách chậm hơn so với cách tôi thực sự làm.
Mọi suy nghĩ?
+1 cho câu hỏi được viết tốt bằng dữ liệu bảng và cách bạn cố gắng giải quyết vấn đề của mình. – Taryn