mysql - 加入时间戳范围

标签 mysql sql join

我有两张 table

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 .

如何实现所描述的行为?

最佳答案

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

关于mysql - 加入时间戳范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435279/

相关文章:

mysql - 在C中将MySQL连接保留在函数中的静态变量中(避免全局变量)

mysql - 我如何在 MySQL 的外部查询中使用 IN 运算符在子查询中使用 LIMIT 运算符

MySQL - 在表内配对数据,考虑到差距和缺失数据

mysql - 从许多表返回计数结果的 SQL 查询

python - 使用 .join() 插入一个 unicode 字符

mysql - 如何解决错误 1396 (HY000) : Operation ALTER USER failed for 'root' @'localhost' ?

mysql - 在 Redhat 上安装 mysql,无需互联网,也无需 cd/dvd iso

mysql - SQL查询总结问题

java - 从 mybatis xml 查询生成 sql 查询

c# - 如何对 MySQL 查询进行排队,使它们顺序进行而不是并发,并防止过度使用 I/O?