是否可以在 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 - 在 WHERE 中重用 SELECT 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29859101/