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";