介于&之间在运算符中 - 如何为SQL中的列赋予多个条件

时间:2015-06-26 07:19:21

标签: sql

如果我想找到在2010年,2011年,2012年,2013年,四年内提供产品的供应商数量。我如何为此构建查询? Between和In运算符不起作用。

3 个答案:

答案 0 :(得分:0)

如果不知道有关您的表的信息,如果年份存储在一列中,那么您可以执行类似这样的操作

1.6.2

如果它是DATETIME的一种你可以做的

SELECT * FROM Table WHERE (year = '2010') OR (year = '2011') OR (year = '2012') OR (year = '2013');

是'YYYY-MM-DD HH:MM:SS'是MySQL的默认DATETIME格式,我们不知道你在使用什么,但是你明白了。

答案 1 :(得分:0)

将日期更改为字符,您可以使用IN

SELECT COUNT(SUPPLIERS) FROM 
(SELECT SUPPLIERS,Count(DISTINCT TO_CHAR(DATETIME_FIELD,'YYYY')) FROM TABLE_NAME 
WHERE TO_CHAR(DATETIME_FIELD,'YYYY') 
    IN 
('2010','2011','2012','2013')
GROUP BY SUPPLIERS 
HAVING Count(DISTINCT TO_CHAR(DATETIME_FIELD,'YYYY'))=4);

答案 2 :(得分:0)

有很多方法:

select * from TableName 
where functionToExtractYear(DateColumn) in(2010, 2011, 2012, 2013)

select * from TableName 
where functionToExtractYear(DateColumn) between 2010 and 2013

select * from TableName 
where DateColumn >= '2010-01-01' and DateColumn <= '2014-01-01'

最后一个最好至少在Sql Server中,因为它会在DateColumn上使用可能的索引。

您尚未指定所使用的引擎,因此functionToExtractYear()可能因不同产品而异。对于Sql Server,它是YEAR()