根据多个值选择列

时间:2014-08-11 11:34:35

标签: 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";

以上结果一无所获。基本上就是:给我所有公司的价值一直低于最后一年的X.

3 个答案:

答案 0 :(得分:2)

你的条件永远不会成真。它不能同时是2005年和2006年。

尝试in

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

in会检查year是否为以下值之一。

or

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

or只检查左侧右侧条件是否为真。

答案 1 :(得分:0)

这应该适合你:

SELECT * FROM data WHERE value < "X" AND YEAR IN (2005, 2006, 2007, 2008)

答案 2 :(得分:0)

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

SELECT * FROM data WHERE value < "X" AND year(year) >=2005;

否则你可以使用:

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