MySQL:如果在日期之后达到特定值,则获取所有行

时间:2016-01-27 22:44:00

标签: mysql database select

在MySQL中,我希望找到在特定日期之后列的值变为0的所有行。

所以,鉴于数据:

cat    value     date
a      95        2015-09-01
a      78        2015-10-01
a      0         2015-11-01
a      0         2015-12-01
b      129       2015-09-01
b      230       2015-10-01
b      201       2015-11-01
b      140       2015-12-01

在这种情况下,我想运行一个询问:

的查询
  

2015年10月1日之后哪些类别的值为0,并且在2015年11月1日之前有正值?

结果应显示“a”类别。

我怀疑是一个嵌套的select语句,但还没有弄明白。

2 个答案:

答案 0 :(得分:2)

select * from yourTable where value = 0 and date > '2015-10-01' and cat in (
  select distinct cat where value > 0 and date < '2015-11-1'
)

说明:您可以将查询拆分为两部分 - 使用in语句的内部查询负责获取在11/1/15之前为肯定的cat ID,以及where value = 0 and date > '2015-10-01'会给你那些在10/1/15之后为0的那些

答案 1 :(得分:1)

建立Nir Levy所说的内容,如果您只想要返回类别,则可以只选择cat的不同值:

SELECT DISTINCT cat
FROM stack_test.your_table
WHERE value = 0 AND date > '2015-10-01' AND
cat IN (SELECT cat FROM stack_test.mysql_rows WHERE value > 0 AND date < '2015-11-01');