Mysql:如何在查询中重用计算
我在下面有一个查询,用于检索给定时间内未更新的记录(以小时为单位),并按运行时间排序:Mysql:如何在查询中重用计算,mysql,syntax,label,Mysql,Syntax,Label,我在下面有一个查询,用于检索给定时间内未更新的记录(以小时为单位),并按运行时间排序: SELECT TABLE.Key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP) FROM TABLE WHERE TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP) <= 7 ORDER BY TIMESTAMPDIFF(HOUR, TA
SELECT TABLE.Key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP)
FROM TABLE WHERE TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP) <= 7 ORDER BY TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP);
如您所见,它多次调用TIMESTAMPDIFF,这不是很有效,因为所有这些调用都会导致无用的SQL计算
我想知道是否有一种方法可以重复使用这些计算,从而只处理一次
非常感谢你的帮助
弗洛伦特我希望你不介意我编辑了你的问题,我想这篇标题和正文会引起更多的关注。非常感谢你花时间重写它。我的英语不是很好:非常感谢,我会试试这个!当然,我明天可以测试一下。您使用的请求的结构非常有趣,为了理解,我将查看文档。谢谢。致以最诚挚的问候。事实上,我已经能够测试它,它就像一个魅力。我会记住如何命名子查询并访问其结果,这非常有用。顺致敬意,
SELECT
t.Key, t.dif
FROM (
SELECT key, TIMESTAMPDIFF(HOUR, TABLE.Date_last_consulted, CURRENT_TIMESTAMP) dif
FROM TABLE
) t
WHERE
t.dif <= 7
ORDER BY
t.dif