(我不会说英语很好,但我会尽我所能)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