如果标题有点奇怪,很抱歉,用1句话很难解释。
我有两张桌子:
只有在自最新版本以来删除,创建或编辑文件时才会创建fileChange
每个fileChange都链接到一个版本,比如版本23.
每个fileChange都有一个changeType:创建,编辑或删除
每个fileChange都有一个文件字段,用于保存从根到文件的相对路径
如果创建或编辑了fileChange,则内容列将填充创建/编辑文件中的内容。
这一切都适用于我正在构建的版本控制/部署系统。
当我创建新的服务器安装时,我想将最新版本上传到服务器。我可以循环遍历从版本1到最新版本的所有文件更改并获得最新版本,但我很想知道是否有办法在1或2个MySQL查询中执行此操作。
所以我的目标是获取影响最新版本软件的所有fileChange行。另一种解释是:
如何获取“已创建”或“已编辑”的所有fileChanges,并且没有具有相同文件路径的更新文件更改?
答案 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