mysql之在 WHERE 中重用 SELECT 的值

yyy_WW 阅读:71 2024-10-25 08:56:14 评论:0

是否可以在 WHERE 子句中重用 SELECT 的值?
实际上,如果可能的话,我会很好:在 SELECT 中重用来自 WHERE 的值。我只是想提高可读性和最终性能:我猜现代 SQL Server 不会计算两次该值。

SELECT `e`.*, (datediff(e.start, 'someValue')) AS `offset` 
FROM `event` AS `e` 
WHERE `offset` % someInterval = 0 

代替

SELECT `e`.*, (datediff(e.start, 'someValue')) AS `offset` 
FROM `event` AS `e` 
WHERE (datediff(e.start, 'someValue')) % someInterval = 0 

请您参考如下方法:

使用HAVING代替WHERE:

SELECT `e`.*, (datediff(e.start, 'someValue')) AS `offset` 
FROM `event` AS `e` 
HAVING `offset` % someInterval = 0 

WHERE 用于决定将哪些行放入结果集中,因此如果您可以在选择结果的同时引用结果,那么您将无限倒退。

HAVING 用于在计算结果后对其进行过滤。


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号