我正在写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
)
编辑
即时消息使用
Apache Ignite Queries