MySQL,条件有点帮助

时间:2011-07-27 12:51:34

标签: mysql

我有一个带有库存字段的产品表和一个时间戳字段,表示产品上次更新的时间。

我需要编写一个查询来提取所有库存> = 0的产品,对于那些库存= 0的产品,检查时间戳和当前时间之间的差异是否小于30天。如果stock = 0且datediff(now(),timestamp)> 30,则从记录集中排除产品。

到目前为止,我已经编写了一个查询(见下文),但这是不正确的,因为它甚至会排除那些在过去30天内没有更新过库存> 0的产品。

select * from products where stock>=0 and datediff(now(), timestamp)>=30;

3 个答案:

答案 0 :(得分:2)

这是你想要的吗?

SELECT * FROM products WHERE stock > 0 OR stock = 0 AND DATEDIFF(NOW(), timestamp) <= 30;

如果stock字段未签名,则可以删除条件'stock = 0'。

答案 1 :(得分:1)

修改

根据你的评论,这是答案 非常神秘的问题

SELECT * FROM products WHERE stock > 0 
OR (stock = 0 and DATEDIFF(NOW(), timestamp) <= 30);

答案 2 :(得分:1)

SELECT * FROM products 
WHERE 
        stock>0 
OR (
        stock=0
        AND datediff(now(), timestamp)<=30
);