Sql 基于多个值选择列

Sql 基于多个值选择列,sql,Sql,我有如下数据: data.csv company year value A yz x 当值小于x且年份为2005、2006、2007、2008等时,我不想获取所有列 SELECT * FROM data WHERE value < "X" AND year ="2005" AND year="2006" AND year="2007" AND year="2008"; 从数据中选择*,其中值

我有如下数据:

data.csv
company  year  value
A        yz    x
当值小于x且年份为2005、2006、2007、2008等时,我不想获取所有列

SELECT * FROM data WHERE value < "X" AND year ="2005" AND year="2006" AND year="2007" AND year="2008";
从数据中选择*,其中值<“X”和year=“2005”和year=“2006”和year=“2007”和year=“2008”;

以上结果一无所获。因此,基本上:给我所有在过去YZ年中价值低于X的公司。

你有一个永远都不可能是真的条件。不可能同时是2005年和2006年

在中尝试

SELECT *
FROM   data
WHERE  value < "X"
AND    year in ("2005", "2006", "2007", "2008")
;

仅检查左侧或右侧条件是否正确。

这应该适用于您:

SELECT * FROM data WHERE value < "X" AND YEAR IN (2005, 2006, 2007, 2008)
从值小于“X”且年份在(2005、2006、2007、2008)中的数据中选择*

考虑将字符串格式从一年更改为一个日期时间,然后您可以简单地如下选择:

从数据中选择*,其中值<“X”和年份(year)>=2005

除此之外,您还可以使用:


从值小于“X”且年份在(2005、2006、2007、2008)中的数据中选择*

干杯,但这并不能真正满足我的需求。我想要的是那些在YZ1和YZ2之间的整个时间段内值小于X的公司的结果。因此,我不希望公司在这些年中只有一年的值小于X。查询每年检查
。你是说你想查一下总数吗?是的。我应该把它翻过来?我想举个例子:A公司的价值低于X已经有13年了,这是我数据中的时间段。公司B的价值低于X已经有11年了。我想让结果显示A公司,但不是B公司。这是一项非常困难的任务,因为您需要一个字段的累加和,并将其与其他字段的结果进行比较。。。这比你现在的问题要深入得多。我建议问一个新问题,解释你想要的所有细节,你的数据库平台,等等。啊,也许我有点紧张,没有想清楚。我将发布一个新的:)对标题有什么建议吗?Cheerri可以很容易地转换为datetime,但这并不能真正提供所需的输出,请参见下面的我的帖子@Patrick Hofmann。这确实回答了这个问题,但您可以添加更多关于IN如何工作的上下文,例如。
SELECT * FROM data WHERE value < "X" AND YEAR IN (2005, 2006, 2007, 2008)