我有一个MySQL数据库,它有三个数据库表:news_articles
、languages
和news_articles_languages
。
languages
表保存系统支持的每种语言的记录news_articles
表保存关于新闻文章的一般信息,例如ID和附加图像news_articles_languages
表包含新闻文章的本地化信息,还存储修订
news_articles_languages
表的结构如下:
id INT AUTO_INCREMENT
article_id INT
language_id INT
title VARCHAR
friendly_name VARCHAR
content TEXT
created TIMESTAMP
当保存一篇新闻文章时,翻译会插入到这个表中,并添加一个新的created
列,这样我就可以轻松地查询以前的修订。
但是,我希望能够根据文章ID提取所有最新修订。对此的查询是什么?我尝试过GROUP BY
和DISTINCT
的各种组合,但它们在一种语言中只给出一个结果;我想要给定文章的所有语言。
如果具有最高id的修订总是最新的,那么我认为以下内容应该有效。如果你不能依赖它,并且需要使用"created",那么我不确定!
SELECT * FROM `news_articles_languages` WHERE id IN(SELECT MAX(id) FROM `news_articles_languages` WHERE article_id = 1 GROUP BY language_id)