我正在处理sql语句,但我的sql知识似乎不够复杂,无法实现我的目标。我有一个如下表格结构:
ID INTERVAL
1 2014-11-12/2014-11-19
1 2015-11-12/2015-11-19
2 2014-11-12/2014-11-19
3 2016-11-12/2016-11-19
现在我有一个ID数组包含:
[1, 2, 3]
我希望获得所有ID的所有间隔,其中所有ID都存在每个间隔。我从下面的陈述开始:
SELECT INTERVAL FROM INTERVALS WHERE ID IN (1, 2, 3)
此举将返回:
2014-11-12/2014-11-19
2015-11-12/2015-11-19
2014-11-12/2014-11-19
2016-11-12/2016-11-19
但是现在我还想只返回那些每个id存在相同间隔的结果。所以在这种情况下我会期望没有任何结果。但是,如果我们有这个数据集,例如:
ID INTERVAL
1 2014-11-12/2014-11-19
1 2015-11-12/2015-11-19
2 2014-11-12/2014-11-19
3 2014-11-12/2014-11-19
3 2016-11-12/2016-11-19
查询结果应为
2014-11-12/2014-11-19
因为只有这个间隔存在于所有给定的id中。 我如何更改我的sql语句来实现它?
我也尝试过:
SELECT INTERVAL FROM INTERVALS A
WHERE A.ID in (1, 2, 3)
AND EXISTS (
SELECT INTERVAL FROM INTERVALS B
WHERE A.INTERVAL = B.INTERVAL
)
修改