Mysql:如何在查询中重用计算

时间:2012-06-24 16:42:08

标签: 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, TABLE.Date_last_consulted,
CURRENT_TIMESTAMP);

正如您所看到的,它多次调用TIMESTAMPDIFF,这不是很有效,因为所有这些调用都会导致无用的SQL计算。

我想知道是否有办法重复使用计算,因此只处理一次?

非常感谢你的帮助。

Florent的

1 个答案:

答案 0 :(得分:0)

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