我有两个MySQL表。 表1:
id name otherid
表2:
id otherid time
在每个表中,“id”是每一行的唯一标识符(也是主键) 表中的“otherids”对应。 table2中可能有几个(或0)行,其中一个otherid对应于table1中的otherid。表
例如, 表1:
id name otherid
1 bob 24
2 joe 326
表2:
id otherid time
4 326 2014-03-12 023:38:59
5 24 2013-02-11 22:05:21
6 24 2013-02-10 13:27:58
我希望获取table1中的每一行,按照tableid中最近的行的时间顺序排序。 在我的例子中,这是我想要的结果:
id name time
2 joe 2014-03-12 023:38:59
1 bob 2013-02-11 22:05:21
这是因为Joe有来自table2的最近时间。
答案 0 :(得分:2)
见下面的例子:
SELECT table1.*, max(table2.time)
FROM table1
INNER JOIN table2 ON table1.otherid = table2.otherid
GROUP BY table2.otherid
ORDER BY table2.id
答案 1 :(得分:1)
尝试
SELECT MIN(a.id) AS `id`, MIN(a.name) AS `name`, MAX(b.time) AS `time`
FROM table1 a INNER JOIN
table2 b ON a.otherid = b.otherid
GROUP BY a.otherid
ORDER BY b.time DESC
答案 2 :(得分:0)
您可以使用MAX
功能获取最近的时间。
离。 MAX(time)
答案 3 :(得分:0)
SELECT
Table1.id, name, MAX(time)
FROM
Table1
JOIN Table2 USING (otherid)
GROUP BY
otherid
ORDER BY
time DESC
答案 4 :(得分:0)
SELECT DISTINCT(table1.id),table1.name,table2.time FROM table1
LEFT JOIN table2 ON table1.otherid=table2.otherid
ORDER BY table2.time DESC;
答案 5 :(得分:0)
您可以使用连接和子查询来尝试此操作:
select id, name
from tb1 a
left join
(select otherid, max(dt) mdt
from tb2
group by otherid) b
on a.otherid = b.otherid
order by b.mdt desc
;