我正在进行查询,我在两个id上加入两个表。这两个表之间有一对多的关系,我想从第二个表中得到最后一条记录。
我在SQLfiddle上放了一个例子,在这里你可以看到我得到了第一个第二张表的记录:
- 一个
- uno
- 主要
我想要基于时间(或时间修改)的最后记录,是:
- 两个
- quatro
- 三元组
表格如下所示:
---------------------
|id1|id2|randomvalue|
---------------------
|55 |87 |nise |
|55 |88 |nape |
|55 |89 |nusq |
---------------------
------------------------
|id1|id2|content |time|
------------------------
|55 |87 |one |111 |
|55 |87 |two |128 |
|55 |88 |uno |321 |
|55 |88 |dos |322 |
|55 |88 |tres |384 |
|55 |88 |quatro |390 |
|55 |89 |primary |730 |
|55 |89 |secundary|733 |
|55 |89 |trinary |788 |
------------------------
我写的查询是为了得到第一条记录:
SELECT one.id1, one.id2, two.content
FROM table1 AS one
JOIN table2 AS two ON one.id1=two.id1 AND one.id2=two.id2
GROUP BY two.id2
我尝试过分组和/或订购时间,但无济于事,在这里我对SQL的了解已经结束。
(是的,我知道这个查询似乎有用,因为我没有结合很多信息,但在我的实际数据库中有更多的列(和行))
答案 0 :(得分:2)
使用额外的group by
获取最后一条记录:
SELECT one.id1, one.id2, two.content
FROM table1 one JOIN
table2 two
ON one.id1 = two.id1 AND one.id2 = two.id2 JOIN
(SELECT t.id2, MAX(time) as maxt
FROM table2 t
GROUP BY t.id2
) t
ON two.id2 = t.id2 and two.time = maxt