MySQL查询条件基于不同的行

时间:2016-09-25 14:16:43

标签: mysql sql

我有一张星星测量表。每行(即测量值)包含星号的ID及其周期。

让我们说,例如:

Star_ID  Period
1        3.6
1        3.9
2        4.11
2        4.12
2        8.5
3        7.1
4        1.31
4        1.32

我想编写一个查询,该查询仅返回具有“接近”时段的测量值的星号的Star_ID:包含2个满足P1-P2< X 。在我们的例子中,对于x = 0.02,它应该返回{2,4}。

任何人都可以帮助我吗?

非常感谢:)

1 个答案:

答案 0 :(得分:1)

一种方法是使用自连接和聚合:

select t.star_id
from stars t join
     stars t2
     on t.star_id = t2.star_id and t.period <> t2.period
group by t.star_id
having min(abs(t.period - t2.period)) < 0.02;

注意:这将忽略两个重复的行(相差0)。