我有两张桌子
raw_commits(sha,date,author)
和
milestones(name,start,end)
其中milestones
表包含所有项目里程碑的时间戳范围。
我不确定如何进行JOIN
以实现以下目标:
对于每个raw_commits
,如果raw_commits.sha, raw_commits.date, raw_commits.author, milestones.name
有一个里程碑,则显示NULL
,如果它不属于里程碑,则显示milestones
,并显示每个里程碑的重复行,如果提交“属于”多个milestones
。
使用raw_commits.date
作为参考,即raw_commits.date >= milestones.start AND raw_commits.date <= milestones.end
,显然可以归类为{{1}}。
如何实现所描述的行为?
答案 0 :(得分:2)
SELECT
raw_commits.sha,
raw_commits.author
raw_commits.date,
milestones.name
FROM
raw_commits
LEFT OUTER JOIN
milestones
ON
raw_commits.date BETWEEN milestones.start AND milestones.end