mysql - 在 WHERE 中重用 SELECT 的值

标签 mysql sql

是否可以在 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/

相关文章:

c++ - CMakeList 关于 MySQL Connector c++ 8.0 配置

php - Symfony 中的 Doctrine\ORM\Mapping\MappingException

sql - 使用没有 FOREIGN KEY 的 REFERENCES 是否仍会创建外键?

sql - 需要更改整个列的日期格式

sql - jpql INTERSECT 没有 INTERSECT

mysql - 打开第二个数据库连接时外键锁定事务超时

mysql - 在 mysql 的内容中搜索和替换图像尺寸?

php - 根据从 SQL 数据库动态加载的选择选项值输入文本值

MySQL 组 - 跨 3 个表获取数据

php - 多表SQL交叉引用搜索困难