如何在同一列或不同列的一个sql语句中两次使用'BETWEEN'条件

Posted

技术标签:

【中文标题】如何在同一列或不同列的一个sql语句中两次使用\'BETWEEN\'条件【英文标题】:how to use 'BETWEEN' condetion two times in one sql statement for same column or diffrent columns如何在同一列或不同列的一个sql语句中两次使用'BETWEEN'条件 【发布时间】:2011-05-06 21:21:16 【问题描述】:

这是sql语句只给一个值

SELECT count(pn1) FROM pledges
WHERE date1
BETWEEN '2011-05-05' AND '2011-06-06'

我想对同一列或同一表中的不同列多次使用“之间”

例如,我想在 date1 中多次使用它,或者我想将它用于具有不同范围的 date1 和 date2

注意:我正在使用 java DB Derpy(JDBC-Derby)

【问题讨论】:

【参考方案1】:

同一列不止一次:

SELECT count(pn1) 
    FROM pledges
    WHERE date1 BETWEEN '2011-05-05' AND '2011-06-06'
       OR date1 BETWEEN '2011-07-05' AND '2011-08-06'

两个不同的列:

SELECT count(pn1) 
    FROM pledges
    WHERE date1 BETWEEN '2011-05-05' AND '2011-06-06'
      AND date2 BETWEEN '2011-05-05' AND '2011-06-06'

编辑:根据评论,也许您正在寻找类似的东西?

SELECT SUM(CASE WHEN date1 BETWEEN '2011-05-05' AND '2011-06-06' THEN 1 ELSE 0) END AS Count1,
       SUM(CASE WHEN date1 BETWEEN '2011-07-05' AND '2011-08-06' THEN 1 ELSE 0) END AS Count2
    FROM pledges
    WHERE date1 BETWEEN '2011-05-05' AND '2011-06-06'
       OR date1 BETWEEN '2011-07-05' AND '2011-08-06'

【讨论】:

不,我不是那个意思..我想看到两个结果..在我的查询中我也可以在您的查询中看到一个结果,但我想要 2 个结果,例如..当前查询给我结果是 6,我希望看到 6 和 8 作为结果

以上是关于如何在同一列或不同列的一个sql语句中两次使用'BETWEEN'条件的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一列的条件查询同一列两次?

如何在同一个“调用堆栈”中两次使用宏列表?

停止 SQL 在 JOIN 中两次返回相同的结果

用LINQ将select中两列的结果合并到一个数组中?

在同一个查询中两次使用 UNPIVOT

如何检索表的值以获取sql中两列的最大值