在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语句,但还没有弄明白。
答案 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');