我有一个带有库存字段的产品表和一个时间戳字段,表示产品上次更新的时间。
我需要编写一个查询来提取所有库存> = 0的产品,对于那些库存= 0的产品,检查时间戳和当前时间之间的差异是否小于30天。如果stock = 0且datediff(now(),timestamp)> 30,则从记录集中排除产品。
到目前为止,我已经编写了一个查询(见下文),但这是不正确的,因为它甚至会排除那些在过去30天内没有更新过库存> 0的产品。
select * from products where stock>=0 and datediff(now(), timestamp)>=30;
答案 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
);