MySQL - 从版本控制数据库获取最新版本的文件内容

时间:2014-02-16 23:13:30

标签: mysql sql loops join version-control

如果标题有点奇怪,很抱歉,用1句话很难解释。

我有两张桌子:

  1. 版本
  2. fileChange
  3. 只有在自最新版本以来删除,创建或编辑文件时才会创建fileChange 每个fileChange都链接到一个版本,比如版本23.
    每个fileChange都有一个changeType:创建,编辑或删除 每个fileChange都有一个文件字段,用于保存从根到文件的相对路径 如果创建或编辑了fileChange,则内容列将填充创建/编辑文件中的内容。

    这一切都适用于我正在构建的版本控制/部署系统。

    当我创建新的服务器安装时,我想将最新版本上传到服务器。我可以循环遍历从版本1到最新版本的所有文件更改并获得最新版本,但我很想知道是否有办法在1或2个MySQL查询中执行此操作。

    所以我的目标是获取影响最新版本软件的所有fileChange行。另一种解释是:

    如何获取“已创建”或“已编辑”的所有fileChanges,并且没有具有相同文件路径的更新文件更改?

1 个答案:

答案 0 :(得分:0)

尝试以下查询。它连接版本和文件更改表(假设它们都有一个名为id的列,然后命令结果降序并将结果限制为一个(最新的)行

SELECT *
FROM fileChange
JOIN version ON version.id=fileChange.id
WHERE version.date_of_version_creation < fileChange.date_of_file_creation
ORDER BY version.id DESC
LIMIT 0 , 1