2016-06-12 47 views
1

所以我有两个表,一个拥有所有数据,另一个拥有注释列表,我需要为数据表中的每一行加载最新评论。下面是它的样子SQL - 为每行返回最新评论

表:queries

id | name  | 
-------------------- 
1  | John Doe | 
2  | Jane Doe | 
3  | Alex Smith | 

表:messages

id | queriesId | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | 1   | Comment 1 | 2016-06-12 15:00:08 | 
2  | 1   | Commetn 2 | 2016-06-12 15:01:08 | 
3  | 2   | Comment 3 | 2016-06-12 15:05:35 | 
4  | 2   | Comment 4 | 2016-06-12 15:06:35 | 

我想要的结果看起来像这样

id | name  | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | John Doe | Commetn 2 | 2016-06-12 15:01:08 | 
2  | Jane Doe | Comment 4 | 2016-06-12 15:06:35 | 
3  | Alex Smith | Null  | Null    | 

我想这个代码

SELECT 
    a.*, 
    b.comment, 
    b.LastComment 
FROM 
    queries a 
LEFT JOIN 
    (
    SELECT 
    `comment`, 
    MAX(dateAdded) LastComment, 
     queriesid 
    FROM 
    messages 
    GROUP BY 
    queriesid 
) b ON a.id = b.queriesid 
GROUP BY 
    a.id 

但结果我得到的是这种

id | name  | comment  | dateAdded   | 
-------------------------------------------------------- 
1  | John Doe | Commetn 1 | 2016-06-12 15:01:08 | 
2  | Jane Doe | Comment 3 | 2016-06-12 15:06:35 | 
3  | Alex Smith | Null  | Null    | 

所以,唯一的问题是评论是第一项,并没有与datetime列值对应的一个。我已经尝试了许多改动,但它似乎并没有工作。我相信这是一个微调,远离工作,但我似乎无法找到它。

任何想法?

+0

其DBMS您使用的是怎样的? MySQL或SQL服务器? –

+0

'''comment \''后面的记号看起来像MySQL。 –

+0

对不起,不应该选择这两个标签,它是mysql – VeeK

回答

2

在你的子查询中选择max date和queryId,就像你一样。然后再次加入日期和ID中的消息以获得评论。

编辑:此

SELECT 
    a.*, 
    b.LastComment, 
    comment.comment 
FROM 
    queries a 
LEFT JOIN 
    (
    SELECT 
    MAX(messages.dateAdded) LastComment, 
    messages.queriesid 
    FROM 
    messages 
GROUP BY 
    queriesid 
) b ON a.id = b.queriesid 
LEFT JOIN messages AS comment 
    ON comment.dateAdded = b.LastComment 
    AND comment.queriesid = b.queriesid 
GROUP BY 
    a.id 
+0

你能举个例子吗?我是mysql新手,如何加入表格本身?而且我看到了标记为重复的答案,但它完全不同,因为它只是一张表 – VeeK

+0

编辑了我的答案:) – Philipp

+0

我看到你在那里做了什么。辉煌。感谢一群 – VeeK

相关问题