mysql选择加入:一对多关系

mysql选择加入:一对多关系,mysql,sql,Mysql,Sql,我有两张桌子 table: wiki_articles wiki_article_id | title | slug --------------------------------------- 1 | title 1 | title-1 2 | title 2 | title-2 table: wiki_articles_text wiki_article_text_id | wiki_article_id

我有两张桌子

table: wiki_articles

wiki_article_id | title      | slug
---------------------------------------
1               | title 1    | title-1
2               | title 2    | title-2

table: wiki_articles_text

wiki_article_text_id | wiki_article_id | text | timestamp
---------------------------------------------------------
1                    | 1               | ...  | 2017-04-25 12:00:00
2                    | 1               | ...  | 2017-04-25 12:30:00
3                    | 2               | ...  | 2017-04-25 13:00:00
4                    | 2               | ...  | 2017-04-25 13:30:00
我想选择所有文章以及每篇文章的最新文本

到目前为止,我的问题是:

        $q = "  SELECT      a.wiki_article_id,
                            a.title,
                            a.slug,
                            t1.text,
                            t1.timestamp
                FROM
                            wiki_articles AS a
                JOIN
                            wiki_articles_texts AS t1
                        ON
                            a.wiki_article_id = t1.wiki_article_id
                LEFT OUTER JOIN
                            wiki_articles_texts AS t2
                        ON
                            (a.wiki_article_id = t2.wiki_article_id AND (t1.timestamp < t2.timestamp OR t1.timestamp = t2.timestamp AND t1.wiki_article_text_id < t2.wiki_article_text_id))
                WHERE
                            t2.wiki_article_text_id IS NULL";
$q=“选择a.wiki\u文章\u id,
a、 头衔,
a、 鼻涕虫,
t1.text,
t1.时间戳
从…起
wiki_文章作为
参加
wiki\u文章\u文本为t1
在…上
a、 wiki\u article\u id=t1.wiki\u article\u id
左外连接
wiki\u文章\u文本为t2
在…上
(a.wiki_article_id=t2.wiki_article_id和(t1.timestamp
这是行不通的。我试着用这个()问题,因为我认为这是同一个问题

我的问题出了什么问题


编辑:我发现了一个bug,现在可以用了。我忘了将“1”添加到t1中。wiki\u article\u id

您可以通过wiki\u article\u id在max my\u timestamp组上使用内部联接

$q = "  SELECT      a.wiki_article_id,
                        a.title,
                        a.slug,
                        t1.text,
                        t1.timestamp
            FROM    wiki_articles AS a
            JOIN    wiki_articles_texts AS t1  ON  a.wiki_article_id = t1.wiki_article_id
            INNER   JOIN ( 
              select wiki_article_id, max(timestamp) as  my_timestamp
              from wiki_articles_texts 
              group by wiki_article_id
     ) t2 on  a.wiki_article_id = t2.wiki_article_id and t1.timestamp = t1.my_timestamp";