MySQL查询页面修订版

时间:2011-12-22 11:46:59

标签: mysql

好的,我有一个包含以下列的表

id | page_id |版本| gold_master

所以会有多个page_id,但只有一个是gold_master。但是有些行的版本号比gold_master高,但不是黄金大师。

如何选择版本高于gold_master但不是gold_master的所有行。

到目前为止,我从另一位看“不是金牌大师”的部分令我感到困惑!

2 个答案:

答案 0 :(得分:1)

你的意思是

SELECT * FROM your_table where version > (select version from your_table where gold_master=1)

答案 1 :(得分:0)

就个人而言,我有两个表:一个用于pages,另一个用于page_revisions实际保存内容。

您的pages表将定义主ID以及当前版本ID。 page_revisions表将保存页面标题,内容以及您要为页面存储的任何其他数据。此表在page_id上有一个外键,以及timestamp,因此您可以查看创建修订的时间并对其进行排名。该表也有自己的主键。

由于page_revisions表格有自己的主要ID,因此您可以在pages表中将其用作revision_id。因此,最新版本可能不是当前版本,因为您可以将revision_id设置为早期版本。

希望这是有道理的。如果没有,请告诉我。

编辑:你的实际查询看起来像这样:

SELECT p.id, r.title, r.content, r.created
FROM pages p
LEFT JOIN page_revisions r
ON p.revision_id = r.id
WHERE p.id = 1
LIMIT 1