选择值在给定数组中出现的列以及所有数组条目的列值存在的位置

时间:2017-11-27 12:25:28

标签: sql ignite

我正在处理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

0 个答案:

没有答案