如何解决哪里vs拥有-为什么设置日期条件时会得到不同的结果? MySQL的
当我在代码的“ WHERE”部分和“ HAVING”部分设置日期条件时,我试图了解MySql如何处理日期条件。您能否帮助我了解以下情况下逻辑上的区别?当我使用HAVING应用日期条件时,如何只得到一种产品,而如果使用WHERE却得到了两种产品?
问题:编写一个SQL查询,报告仅在2019年春季销售的产品。也就是说,在2019-01-01至2019-03-31之间。
FROM Sales s
JOIN Product p
ON s.product_id = p.product_id
GROUP by s.product_id
HAVING min(sale_date)>='2019-01-01' AND max(sale_date)<='2019-03-31'
-
具有选项(正确的选项)
FROM Sales s JOIN Product p ON s.product_id = p.product_id WHERE sale_date BETWEEN '2019-01-01' AND '2019-03-31' GROUP by s.product_id
-
具有结果 {“标头”:[“ product_id”,“产品名称”],“值”:[[1,“ S8”]]}
-
在哪里选择
Microsoft.ServiceBus.Messaging.BrokeredMessage
-
结果在哪里 {“标头”:[“ product_id”,“产品名称”],“值”:[[1,“ S8”], [2,“ G4”] ]}
G4来自哪里2? (如果这很琐碎,请提前道歉,我确实是在尝试自己学习,而且没有人要问。)
解决方法
WHERE
正在过滤行以仅考虑1月,2月和3月的销售额。因此,包括该期间内所有销售的产品。
另一方面,HAVING
正在考虑产品的所有销售。然后,针对每种产品,它查看最小和最大日期。仅包括在1月,2月和3月具有所有销售额的产品。
考虑product_id = 2
。它在2月有销售,因此将包含在WHERE
子句中。但是,它在6月也有销售。因此,最大日期是6月-并且HAVING
子句将其过滤掉。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。