(我不會說英語很好,但我會盡我所能)MySQL選擇不同的值按日期排序
我有兩張表。
表1
id carid user --------------------- 1 | A001 | user1 2 | A002 | user1 3 | A003 | user2 4 | A002 | user3
表2
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
,我需要選擇每一個不同的註冊表從 「用戶1」, 「carid」 的日期時間
結果排序,我需要:
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
我實際製作的方式是從我想要的用戶中選擇所有「carid」,並通過.net單獨選擇每一行。
`SELECT carid FROM table1 where user = 「user1」;`
carid ----- A001 A002
然後選擇我想要的行:
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
但根據登記的號碼「carid的」從用戶我必須做很多querys的。 我不知道這是否是可能的一個SELECT改善我做的方式做到這一點,但是這是我曾嘗試:
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;
結果:
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
而且我也試過這樣:
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;
結果:
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
但是我得到的結果是錯誤的。 我不知道如何選擇所有的行,這比我真正做到的方式要慢一些。
有什麼想法?
對錶格數據寫得很好的問題以及您如何嘗試解決您的問題+1。 – Taryn